如何按条件合并DataFrame中指定类型的连续行对?
解决方法
先筛选出仅Type为'A'的行,再将每连续两行(即一对消息)归为一组,最后合并每组的消息内容并保留Type字段即可。
完整代码示例
import pandas as pd import numpy as np # 示例输入数据 data = {'Type': ['A', 'A', 'B', 'A', 'A', 'C'], 'Message': ['Start', 'End', 'Hello', 'Start2', 'End2', 'World']} df = pd.DataFrame(data) # 1. 只保留Type为'A'的行 filtered_df = df[df['Type'] == 'A'].copy() # 2. 为每两行创建一个分组ID,确保成对合并 filtered_df['pair_id'] = np.arange(len(filtered_df)) // 2 # 3. 按分组合并消息,保留Type字段 merged_df = filtered_df.groupby('pair_id', sort=False).agg( Type=('Type', 'first'), # 每组Type都是'A',取任意一个都可以 Message=('Message', ''.join) ).reset_index(drop=True) print(merged_df)
输出结果
Type Message 0 A StartEnd 1 A Start2End2
注意事项
- 此方法基于Type为'A'的行严格成对出现的前提(即行数为偶数)。若存在奇数行,最后一组会仅包含一条消息,可根据实际需求添加丢弃或标记逻辑。
- 使用
sort=False保证分组时保留原始数据的顺序,避免打乱消息对的先后关系。
内容的提问来源于stack exchange,提问作者bobby
相关产品推荐
相关产品推荐

