如何在Pandas中按file列分组合并source列的唯一值?
解决Pandas大DataFrame按分组合并字符串的问题
问题场景
给定大规模Pandas DataFrame,需按file列分组,将每组内source列的所有值用; 连接后替换原列,确保相同file的行对应相同的合并字符串。
示例数据
import pandas as pd df_test = pd.DataFrame(data=None, columns=['file','source']) df_test['file'] = ['file_1', 'file_1', 'file_2', 'file_2', 'file_3', 'file_3'] df_test['source'] = ['usa', 'uk', 'jp', 'sk', 'au', 'nz']
高效解决方案
针对大规模数据,推荐使用groupby+transform的组合,无需额外合并操作,直接将分组聚合结果映射回原DataFrame,内存效率更高:
# 按file分组,合并每组source列的内容 df_test['source'] = df_test.groupby('file')['source'].transform(lambda x: '; '.join(x))
结果验证
执行后df_test['source']的输出为:
0 usa; uk 1 usa; uk 2 jp; sk 3 jp; sk 4 au; nz 5 au; nz Name: source, dtype: object
内容的提问来源于stack exchange,提问作者Marcus K.
相关产品推荐
相关产品推荐

