我有一个大型数据集,它有两列 Name, Value
,它看起来像这样:
import pandas as pd
data = [['code',10],['classe',12],['series','B'], ['code',12],['classe',1],
['series','C'],['code',16],['classe',18],['series','A']]
df1 = pd.DataFrame(data,columns=['Name','Value'])
df1
输出
Name Value
0 code 10
1 classe 12
2 series B
3 code 12
4 classe 1
5 series C
6 code 16
7 classe 18
8 series A
我想要这样的东西:
code classe series
0 10 10 B
1 12 1 C
2 16 18 A
在我的数据集中,它重复了 N 次,我想将其转换为三列 code, classe, series
。
提前感谢您的帮助!
最佳答案
您可以使用 .pivot
完成此操作
df2 = df1.pivot(columns='Name', values='Value')
pd.concat([df2[series].dropna().reset_index(drop=True) for series in df2], axis=1)
输出
classe code series
0 12 10 B
1 1 12 C
2 18 16 A
更重要的是,如果您更改了有序数据,您仍然会得到所需的输出:
import pandas as pd
data = [['code',10],['classe',12],['classe', 14], ['series','B'], ['series', 'C'], ['code',12],['classe',1],
['series','C'],['code',16],['classe',18],['series','A']]
df1 = pd.DataFrame(data,columns=['Name','Value'])
df1
Name Value
0 code 10
1 classe 12
2 classe 14 #Added classe
3 series B
4 series C #Added Series
5 code 12
6 classe 1
7 series C
8 code 16
9 classe 18
10 series A
输出将是:
classe code series
0 12 10 B
1 14 12 C
2 1 16 C
3 18 NaN A
关于python - 通过 Pandas 中两行的值将行转换为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49944501/