根据索引范围熊猫合并行

时间:2020-08-12 08:46:52

标签: python pandas dataframe merge

使用表格,我有一个来自pdf的交易数据框架,其布局如下:

|   | Details     | Transaction |
 --- ------------- -------------
| 0 | Date: 11:20 | Debit       |
| 1 | 01/01/2020  | $100.50     |
| 2 | Date: 13:15 | Credit      |
| 3 | 01/02/2020  | $50.00      | 
 --- ------------- -------------

我想合并来自同一事务的行。在这种情况下,行[0,1]和[2,3]。

我的想法是找到带有字符串“日期”的每个行号,然后合并这些行。

index = list(df.index[df['Details'].str.contains('Date')]
>>> [0, 2]

我希望输出为:

|   | Details     | Transaction |
 --- ------------- -------------
| 0 | Date: 11:20 | Debit       |
|   | 01/01/2020  | $100.50     |
| 1 | Date: 13:15 | Credit      |
|   | 01/02/2020  | $50.00      | 
 --- ------------- -------------

1 个答案:

答案 0 :(得分:3)

使用Series.str.contains + Series.cumsum创建一个分组器g,然后使用DataFrame.groupby将数据帧分组在gagg上,并使用{ {1}}:

join

另一个想法(如果数据帧结构是固定的):

g = df['Details'].str.contains('(?i)Date:').cumsum()
df = df.groupby(g, as_index=False).agg(' '.join)

结果:

df = df.groupby(df.index // 2).agg(' '.join)