簡體   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