我有一个pandas数据帧,我想基于key连接值 例如,
c1 c2 c3 c4 c5
14206 3.5 0 0 0
14206 0 0 0 0
14206 0 0 0 0
14206 0 0 0 0
希望它像......
14206 3.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我尝试了df.groupBy(id),但无法弄清楚接下来要做什么
答案 0 :(得分:0)
这是一种方法。按列0分组,过滤以仅保留数据列,然后将它们全部取消堆叠并将它们转换为您想要的行而不是列:
df.groupby('c1')[['c2', 'c3', 'c4', 'c5']].apply(lambda g: g.unstack().T)
Out[16]:
c2 c3 c4 c5 \
0 1 2 3 0 1 2 3 0 1 2 3 0 1
c1
14206 3.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 3
c1
14206 0.0 0.0