R转Python用户需求:按ID拼接inout变量且保留全部记录
解决方案
你可以用Pandas的groupby配合transform方法实现需求,transform会把分组计算的结果映射回原DataFrame的每一行,刚好满足保留所有记录的要求,和R里聚合后ungroup的效果一致。
实现代码
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'ID': [120, 120, 120], 'inout': ['IN', 'IN', 'OUT'] }) # 按ID分组拼接inout,生成目标字段 df['desire_var'] = df.groupby('ID')['inout'].transform(lambda x: '-'.join(x)) print(df)
运行结果
ID inout desire_var 0 120 IN IN-IN-OUT 1 120 IN IN-IN-OUT 2 120 OUT IN-IN-OUT
原理说明
groupby('ID'):按ID字段分组,将相同ID的行归为同一组transform(lambda x: '-'.join(x)):对每个分组的inout列执行字符串拼接操作,再把拼接结果填充到该分组的每一行中,不会丢失原始记录,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者mar355
相关产品推荐
相关产品推荐

