[英]Combine multiple rows into one row based on Column values in pandas
我正在尝试解析 csv 文件,我几乎已经完成了该文件,但在某一点上卡住了。 我想将行与上一行合并其中上一行的第 1 列不应该是 null 。 我有这样的数据格式。
C1 C2 C3 C4 C5
1001 1S30 5:00:00 MP GL
NaN 1M94 9:06:00 GL MP
1101 1P1 6:35:00 MP Vic
NaN 9E06 07:02:00 Vic N
NaN 9M08 10:02:00 N Liv
NaN 9E13 13:26:00 Liv Vic
NaN 1P26 4:40:00 Vic MP
我想组合如下给定格式的行
我被困住了,因为
在这里任何帮助将不胜感激。
更新:
df.groupby(df['C1'].ffill()).apply(lambda x: x.stack().reset_index())[0].unstack().reset_index()
Output:
C1 0 1 2 3 4 5 6 7 8 ... 11 \
0 1001.0 1001 1S30 5:00:00 MP GL 1M94 9:06:00 GL MP ... NaN
1 1101.0 1101 1P1 6:35:00 MP Vic 9E06 07:02:00 Vic N ... N
12 13 14 15 16 17 18 19 20
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 Liv 9E13 13:26:00 Liv Vic 1P26 4:40:00 Vic MP
[2 rows x 22 columns]
尝试:
df.groupby(df['C1'].ffill()).apply(pd.melt, id_vars='C1')['value'].unstack().reset_index()
Output:
C1 0 1 2 3 4 5 6 7 \
0 1001.0 1S30 1M94 5:00:00 9:06:00 MP GL GL MP
1 1101.0 1P1 9E06 9M08 9E13 1P26 6:35:00 07:02:00 10:02:00
8 ... 10 11 12 13 14 15 16 17 18 19
0 NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 13:26:00 ... MP Vic N Liv Vic Vic N Liv Vic MP
[2 rows x 21 columns]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.