pandas(四十三)Pandas实现复杂Excel的转置合并

一、Pandas实现复杂Excel的转置合并

  • 读取并筛选第一张表

    cpp 复制代码
    df1 = pd.read_excel("第一个表.xlsx")
    df1
    cpp 复制代码
    # 删除无用列
    df1 = df1[['股票代码', '高数', '实际2']].copy()
    df1
    python 复制代码
    df1.dtypes
    
    股票代码      int64
    高数      float64
    实际2       int64
    dtype: object
  • 读取并处理第二张表

    python 复制代码
    df2 = pd.read_excel("第二个表.xlsx")
    df2
    python 复制代码
    # 将 Unnamed: 0 指定为索引列
    df2.set_index('Unnamed: 0', inplace=True)
    df2
    python 复制代码
    # 主要用到transpose做横竖转换,方便处理
    df2 = df2.transpose()
    df2
    python 复制代码
    df2.dtypes
    
    Unnamed: 0
    股票代码        object
    股票名称        object
    行业          object
    天数          object
    正负          object
    看好          object
    出手          object
    结果          object
    20210210    object
    20210209    object
    20210208    object
    20210205    object
    python 复制代码
    # 由于第一张表股票代码是数字,第二张表object 需要转换为number类型
    df2['股票代码'] = df2['股票代码'].astype(int)
    df2
  • 合并数据

    python 复制代码
    df_merge = pd.merge(left=df2, right=df1, left_on='股票代码', right_on='股票代码')
    df_merge
  • 重新队列排序

    python 复制代码
    # 重新队列排序(把list重新变成最终模样)
    columns = list(df_merge.columns)
    columns.remove('高数')
    columns.remove('实际2')
    columns.insert(columns.index("结果"), "高数")
    columns.insert(columns.index("结果"), "实际2")
    columns
    
    ['股票代码',
     '股票名称',
     '行业',
     '天数',
     '正负',
     '看好',
     '出手',
     '高数',
     '实际2',
     '结果',
     '20210210',
     '20210209',
     '20210208',
     '20210205',
     ...
     ]
  • 筛选列,专置数据、输出结果

    python 复制代码
    df_result = df_merge[columns].transpose()
    df_result.to_excel("表一表二合并结果.xlsx", header=False)

三、其它

python 复制代码
import pandas as pd
import random

# 学生数量
num_students = 100
# 列表包含所有的科目
subjects = ['语文', '英语', '数序', '自然', '社会', '几何', '代数', '物理', '化学']
# 使用列表推导为每个科目生成随机分数
data = {subject: [random.randint(50, 100) for _ in range(num_students)] for subject in subjects}
# 为学生生成唯一的用户名
data['用户名'] = ['student'+str(i) for i in range(1, num_students+1)]
df = pd.DataFrame(data)
print(df)
python 复制代码
# 获取当前的列顺序
cols = df.columns.tolist()

# 移除'化学'并将其插入到'英语'后面
cols.remove('化学')
physical_index = cols.index('英语')
cols.insert(physical_index + 1, '化学')

# 使用新的列顺序重新排序DataFrame
df = df[cols]

print(df)
相关推荐
姜—姜4 天前
数据分析总结
数据挖掘·数据分析·numpy·pandas·matplotlib·jieba·seaborn
万粉变现经纪人9 天前
如何解决pip安装报错ModuleNotFoundError: No module named ‘transformers’问题
人工智能·python·beautifulsoup·pandas·scikit-learn·pip·ipython
史锦彪12 天前
Pandas 入门:数据分析的得力工具
数据挖掘·数据分析·pandas
Wangsk13312 天前
用 Python 批量处理 Excel:从重复值清洗到数据可视化
python·信息可视化·excel·pandas
木木子999912 天前
Pandas query() 方法详解
pandas·query
修钩.18 天前
力扣 Pandas 挑战(5)---数据分组
算法·leetcode·pandas
万粉变现经纪人18 天前
如何解决pip安装报错ModuleNotFoundError: No module named ‘plotly’问题
python·scrapy·plotly·pycharm·flask·pandas·pip
码界奇点19 天前
Python深度挖掘:openpyxl与pandas高效数据处理实战指南
开发语言·数据库·python·自动化·pandas·python3.11
码界筑梦坊19 天前
91-基于Spark的空气质量数据分析可视化系统
大数据·python·数据分析·spark·django·numpy·pandas
蔷薇のぬ19 天前
Python 使用pandas库实现Excel字典码表对照自动化处理
python·pandas