繁体   English   中英

根据 pandas 中的列值将多行合并为一行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM