我正在尝试解析几乎完成的csv文件,但停留在一点。 我要将行与上一行合并,其中上一行的第1列不应为空。我有这样的数据格式。
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
我要合并以下指定格式的行
我被困是因为
在此提供任何帮助。
答案 0 :(得分:0)
更新:
df.groupby(df['C1'].ffill()).apply(lambda x: x.stack().reset_index())[0].unstack().reset_index()
输出:
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()
输出:
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]