如何解决根据索引范围熊猫合并行
使用表格,我有一个来自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 |
--- ------------- -------------
解决方法
使用Series.str.contains
+ Series.cumsum
创建一个分组器g
,然后使用DataFrame.groupby
将数据帧分组在g
和agg
上,并使用{ {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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。