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)
相关推荐
Font Tian18 分钟前
Pandas 3.0 全解:从默认字符串类型到 Copy-on-Write 的一场“内存模型重构”
python·重构·数据分析·pandas
liu****1 小时前
04_Pandas数据分析入门
python·jupyter·数据挖掘·数据分析·numpy·pandas·python常用工具
liu****17 小时前
02_Pandas_数据结构
数据结构·python·pandas·python基础
渡我白衣1 天前
计算机组成原理(11):加法器
python·机器学习·numpy·pandas·matplotlib·计组·数电
falldeep2 天前
Pandas入门指南
数据结构·算法·leetcode·pandas
墨上烟雨2 天前
Pandas 数据清洗详解
pandas
万粉变现经纪人2 天前
如何解决 pip install 代理报错 SOCKS5 握手失败 ReadTimeoutError 问题
java·python·pycharm·beautifulsoup·bug·pandas·pip
晨晨渝奇2 天前
pandas 中将两个 DataFrame 分别导出到同一个 Excel 同一个工作表(sheet1)的 A1 单元格和 D1 单元格
excel·pandas
jarreyer4 天前
python,numpy,pandas和matplotlib版本对应关系
python·numpy·pandas
写代码的【黑咖啡】4 天前
Python中的Pandas:数据分析的利器
python·数据分析·pandas