2024-04-29 13:53:58 发布
网友
我正在寻找一种方法,将大约600列转换成行。下面是一个示例,其中只有4列(好、坏、好、糟糕):
df:
RecordID good bad ok Horrible A 0 0 1 0 B 1 0 0 1
期望输出:
RecordID Column Value A Good 0 A Bad 0 A Ok 1 A Horrible 0 B Good 1 B Bad 0 B Ok 0 B Horrible 1
您可以使用熔化功能:
(df.melt(id_vars='RecordID', var_name='Column', value_name='Value') .sort_values('RecordID') .reset_index(drop=True) )
输出:
RecordID Column Value 0 A good 0 1 A bad 0 2 A ok 1 3 A Horrible 0 4 B good 1 5 B bad 0 6 B ok 0 7 B Horrible 1
您可以按如下方式使用^{}。使用^{}是首选,因为它自然会导致行已经按照RecordID的顺序排序,因此您不需要再次浪费处理时间排序,当您有大量列时尤其重要
RecordID
df = df.set_index('RecordID').stack().reset_index().rename(columns={'level_1': 'Column', 0: 'Value'})
添加数据帧:
import pandas as pd import numpy as np data2 = {'RecordID': ['a', 'b', 'c'], 'good': [0, 1, 1], 'bad': [0, 0, 1], 'horrible': [0, 1, 1], 'ok': [1, 0, 0]} # Convert the dictionary into DataFrame df = pd.DataFrame(data2)
熔化数据: https://pandas.pydata.org/docs/reference/api/pandas.melt.html
melted = df.melt(id_vars='RecordID', var_name='Column', value_name='Value') melted
可选:分组方式-对于总和或平均值:
f2 = melted.groupby(['Column']).sum() df2
您可以使用熔化功能:
输出:
您可以按如下方式使用^{} 。使用^{} 是首选,因为它自然会导致行已经按照
RecordID
的顺序排序,因此您不需要再次浪费处理时间排序,当您有大量列时尤其重要输出:
添加数据帧:
熔化数据: https://pandas.pydata.org/docs/reference/api/pandas.melt.html
可选:分组方式-对于总和或平均值:
相关问题 更多 >
编程相关推荐