我正在尝试重塑数据框。将我的列排成一行,但是第一列控制行的长度。
我尝试使用pandasivot_table重塑列的形状。 例子:想要看起来。
ID Apex max min angle
1 A1 30.1 -16.9 NA
2 A1 89 NA NA
3 B1 100 26.3 68.9
ID Parameter Simulated
1 Apex A1
1 max 30.1
1 min -16.9
2 Apex A1
2 max 89
3 Apex B1
3 max 100
3 min 26.3
3 angle 68.9
df1 = pd.DataFrame({'ID': [1, 1, 1, 2, 2, 3, 3, 3, 3],
'Parameter': ['Apex', 'max', 'min', 'Apex ', 'max',
'Apex', 'max', 'min', 'angle'],
'Simulated': ['A1', 30.1, -16.9, 'A1', 89,
'B1', 100, 26.3, 68.9],
},
index=[0, 1, 2, 3, 4, 5, 6, 7, 8])
pd.pivot_table(df1, index = 'ID', columns ='Parameter', values = 'Simulated')
我遇到此错误- DataError:没有要聚合的数字类型
谢谢您能给我的帮助。
答案 0 :(得分:2)
尝试:
df1.pivot(index='ID', columns='Parameter', values='Simulated')
输出:
Parameter Apex angle max min
ID
1 A1 NaN 30.1 -16.9
2 A1 NaN 89 NaN
3 B1 68.9 100 26.3
pivot_table
假设您要汇总值,默认情况下它将使用“平均值”,因为您有字符串,因此在数据中进行旋转会导致错误。
多个条目:
df1.groupby(['ID','Parameter']).first()['Simulated'].unstack().reset_index()
答案 1 :(得分:1)
In [43]: df1.set_index(['ID', 'Parameter']).unstack()
Out[43]:
Simulated
Parameter Apex Apex angle max min
ID
1 A1 NaN NaN 30.1 -16.9
2 NaN A1 NaN 89 NaN
3 B1 NaN 68.9 100 26.3