Pandas DataFrame: 行列转换、一行生成多行,多行合并一行

@创建于:2022.07.01
@修改于:2022.07.01

1、构建一个样例数据

import pandas as pd
import numpy as np
df = pd.DataFrame({'姓名': ['name_A', 'name_B', 'name_C'],
                   '班级': ['c1', 'c2', 'c2'],
                   '语文': [90, 60, 70],
                   '数学': [80, 98, 80],
                   '英语': [85, 90, 75],
                   '物理': [92, 63, 76],
                   '化学': [85,100, 89],
                   '生物': [87, 91, 80]})

Pandas DataFrame: 行列转换、一行生成多行,多行合并一行_第1张图片

2、一行生成多行【列转行】

用到pandas的melt方法。

# 一行转多列
df_c = pd.melt(df, id_vars=['姓名', '班级'], var_name="科目", value_name="得分")
df_c

Pandas DataFrame: 行列转换、一行生成多行,多行合并一行_第2张图片

3、多行合并一行【行转列】

pd.pivot(df_c, index="姓名", columns="科目", values="得分")
# rename_axis(index=, columns=) 来给坐标轴重命名
pd.pivot(df_c, index="姓名", columns="科目", values="得分").rename_axis(columns=None).reset_index()

Pandas DataFrame: 行列转换、一行生成多行,多行合并一行_第3张图片
上面丢掉了班级,如何增加班级呢?

pd.pivot(df_c, index=["姓名", '班级'], columns="科目", values="得分").rename_axis(columns=None).reset_index()

Pandas DataFrame: 行列转换、一行生成多行,多行合并一行_第4张图片

4、参考链接

pandas行转列、列转行、以及一行生成多行
pandas如何进行优雅的列转行、行转列?
Pandas中Dataframe行转列

你可能感兴趣的:(python,pandas,python)