如何使用Pandas实现DataFrame按ID分组过滤、转置后合并为统一数据集
实现代码
你可以直接用groupby.apply()批量处理所有id分组后自动拼接结果,无需手动写循环:
import pandas as pd # 请替换为你自己的原始dataframe变量 result = df.groupby('id', group_keys=False).apply( lambda group: group[["text_field", "text_value"]] .set_index("text_field") .T ).reset_index(drop=True)
逻辑说明
groupby('id')自动按id字段拆分所有独立分组group_keys=False避免生成多余的id索引层级- lambda函数内的逻辑就是你之前单id的处理逻辑,会自动应用到每个分组
- 末尾
reset_index(drop=True)可以清除默认生成的text_value行索引,如果你需要保留该行标识可以删除这行代码
重复字段兼容处理
如果分组内存在重复的text_field(比如示例中id=2的两个Position值),可以先给重复字段加序号后缀再处理,代码如下:
def process_single_group(group): # 给同分组内的重复text_field加序号后缀,避免转置时字段冲突 group['text_field'] = group['text_field'] + '_' + group.groupby('text_field').cumcount().astype(str) return group[["text_field", "text_value"]].set_index("text_field").T result = df.groupby('id', group_keys=False).apply(process_single_group).reset_index(drop=True)
运行后id=2的分组会自动生成Position_0、Position_1两列,值分别对应City、Countryside,所有分组的转置结果会自动合并,缺失字段填充为NaN值。
内容的提问来源于stack exchange,提问作者Luan
相关产品推荐
相关产品推荐

