Python DataFrame 操作:如何将DataFrame中的每两行合并为一行?
解决DataFrame两行合并为一行的需求
这个需求实现起来很直观,咱们可以利用pandas的groupby结合自定义聚合函数来完成,具体步骤如下:
1. 预处理(如果Tags列是字符串格式)
首先确认你的Tags列是实际的列表类型,如果它看起来是列表但存储为字符串(比如"[k1, k3k, ...]"),需要先转换为列表:
import ast import pandas as pd # 假设你的原始DataFrame名为df df['Tags'] = df['Tags'].apply(ast.literal_eval)
2. 生成分组键并执行聚合
我们可以用索引整除2的方式,把每两行划分为一组,然后对每组进行针对性的聚合操作:
# 生成分组标识:每两行一组,索引0和1为组0,2和3为组1,以此类推 group_keys = df.index // 2 # 分组聚合生成目标DataFrame merged_df = df.groupby(group_keys).agg( Shape=('Shape', lambda x: ''.join(x)), # 把两个"P"拼接成"PP" Number of Tags=('Number of Tags', 'sum'), # 标签数量直接求和(5+5=10) Tags=('Tags', lambda x: [item for sublist in x for item in sublist]) # 合并两个子列表 ).reset_index(drop=True)
3. 验证结果
执行完上述代码后,merged_df就会完全符合你的预期:
- 总行数为250(500行每两行合并一组)
Shape列全部为PPNumber of Tags列全部为10Tags列是包含10个元素的合并列表
这种方法逻辑清晰,处理效率也很高,适合处理大规模的DataFrame数据。
内容的提问来源于stack exchange,提问作者CubertZ
相关产品推荐
相关产品推荐

