Python 熊猫重新排序数据
这可能是一个使用pivot的简单方法,但是由于我没有添加数字(每一行都是唯一的),我应该怎么做呢 输入:Python 熊猫重新排序数据,python,pandas,dataframe,Python,Pandas,Dataframe,这可能是一个使用pivot的简单方法,但是由于我没有添加数字(每一行都是唯一的),我应该怎么做呢 输入: Col1 Col2 Col3 0 123.0 33.0 ABC 1 345.0 39.0 ABC 2 567.0 100.0 ABC 3 123.0 82.0 PQR 4 345.0 10.0 PQR 5 789.0 38.0 PQR 6 890.0 97.0 XYZ 7 345.0
Col1 Col2 Col3
0 123.0 33.0 ABC
1 345.0 39.0 ABC
2 567.0 100.0 ABC
3 123.0 82.0 PQR
4 345.0 10.0 PQR
5 789.0 38.0 PQR
6 890.0 97.0 XYZ
7 345.0 96.0 XYZ
输出:
Col1 ABC PQR XYZ
0 123.0 33.0 82.0 NaN
1 345.0 39.0 10.0 96.0
2 567.0 100.0 NaN NaN
3 789.0 NaN 38.0 NaN
4 890.0 NaN NaN 97.0
我可以得到数据帧格式的输出吗?非常感谢您的关注 您可以使用:
另一个解决方案包括和:
按注释编辑: 需要: 另一个更快的解决方案是聚合
平均值
(默认情况下,数据透视表aggreagate平均值
),最后转换为系列
:
非常感谢。。让我看看第二个。。第一个是我尝试过的,并给了我这个错误:“ValueError:Index包含重复的条目,无法重塑'input\.set\.Index(['Col1','Col3'])['Col2'])。unstack()也给出了ValueError:Index包含重复的条目,无法重塑眼睛,因此为了更好地解释,我添加了另一个带有链接的解决方案。
print (df.pivot(index='Col1', columns='Col3', values='Col2'))
Col3 ABC PQR XYZ
Col1
123.0 33.0 82.0 NaN
345.0 39.0 10.0 96.0
567.0 100.0 NaN NaN
789.0 NaN 38.0 NaN
890.0 NaN NaN 97.0
print (df.set_index(['Col1','Col3'])['Col2'].unstack())
Col3 ABC PQR XYZ
Col1
123.0 33.0 82.0 NaN
345.0 39.0 10.0 96.0
567.0 100.0 NaN NaN
789.0 NaN 38.0 NaN
890.0 NaN NaN 97.0
print (df.pivot_table(index='Col1', columns='Col3', values='Col2'))
Col3 ABC PQR XYZ
Col1
123.0 33.0 82.0 NaN
345.0 39.0 10.0 96.0
567.0 100.0 NaN NaN
789.0 NaN 38.0 NaN
890.0 NaN NaN 97.0
print (df.groupby(['Col1','Col3']).mean().squeeze().unstack())
Col3 ABC PQR XYZ
Col1
123.0 33.0 82.0 NaN
345.0 39.0 10.0 96.0
567.0 100.0 NaN NaN
789.0 NaN 38.0 NaN
890.0 NaN NaN 97.0