我确信这很容易做到,但我无法弄清楚。 我正在用 python 编码并使用 pandas 来处理数据帧。我的数据框如下所示:
a b c
1 10 20
1 30 40
1 60 70
1 80 100
2 10 20
2 60 70
2 80 100
我想这样改造它:
a b1 c1 b2 c2 b3 c3 b4 c4
1 10 20 30 40 60 70 80 100
2 10 20 60 70 80 100 NA NA
基本上,对于 a
中的值相同的每一行,获取 b
和 c
中的值并将它们转换为新列,这样我最终对于 a
中的每个值都只有一行。
我希望我说得足够清楚,如果不清楚,请随时告诉我。 预先感谢您提供的任何帮助!
弗洛里安。
最佳答案
我们需要使用cumcount
在这里创建一个帮助键
s=df.assign(key=df.groupby('a').cumcount()+1).set_index(['a','key']).stack().unstack([1,2])
s.columns=s.columns.map('{0[1]}{0[0]}'.format)
s
Out[396]:
b1 c1 b2 c2 b3 c3 b4 c4
a
1 10.0 20.0 30.0 40.0 60.0 70.0 80.0 100.0
2 10.0 20.0 60.0 70.0 80.0 100.0 NaN NaN
关于python - 使用 Pandas 将多行转换为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50088085/