我正在寻找一种基于列值聚合 Pandas DataFrame 的有效方法,其中根据另一列中的值扩展和命名列。这最好通过一个例子来解释:
这是我的输入数据帧:
customer device x y z
0 Jack M 1 2 3
1 Jack D 4 5 6
2 Jane M 7 8 9
3 Jane D 10 11 12
这是我想要的输出:
customer x_M y_M z_M x_D y_D z_D
0 Jack 1 2 3 4 5 6
1 Jane 7 8 9 10 11 12
如您所见,“聚合”可能是一个误导性词。相反,这些行被“扩展”为基于来自其各自行的另一列命名的列。
在我看来,我将不得不做某种循环——但我希望 Pandas 操作比做同样的事情更有效。谢谢。
只是pivot
数据框,然后通过以下方式连接两个级别的列_
:
>>> out=df.pivot('customer', 'device', ['x', 'y', 'z'])
>>> out.columns=['_'.join(c) for c in out]
输出:
x_D x_M y_D y_M z_D z_M
customer
Jack 4 1 5 2 6 3
Jane 10 7 11 8 12 9
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句