基于ID提取并拼接唯一fix_timestamps的Pandas脚本问题
解决方法
核心思路是先按id分组聚合所有唯一的fix_timestamps,再将聚合结果映射回原数据的每一行,具体代码如下:
import pandas as pd # 读取文件,根据实际格式调整sep、header等参数 df = pd.read_csv('your_large_file.csv') # 按id分组,聚合每个id对应的唯一fix_timestamps,用';'拼接成字符串 # 如果fix_timestamps是数值类型,需添加.astype(str)转成字符串后拼接 id_time_mapping = df.groupby('id')['fix_timestamps'].agg( lambda x: ';'.join(x.unique()) ) # 将原数据的fix_timestamps列替换为对应id的完整拼接串 df['fix_timestamps'] = df['id'].map(id_time_mapping) # 保存处理后的文件 df.to_csv('processed_file.csv', index=False)
关键说明
- 原脚本问题在于没有做分组聚合,仅处理单行数据,所以只会重复当前行的时间戳。而
groupby('id')['fix_timestamps'].agg(...)会为每个id收集所有出现过的唯一时间戳,完成拼接。 - 若处理超大型文件(内存不足),可以添加
sort=False参数提升groupby效率:df.groupby('id', sort=False)['fix_timestamps'].agg(...) - 如果
fix_timestamps是数值型时间戳,需要修改聚合逻辑为lambda x: ';'.join(x.unique().astype(str)),避免拼接时出现类型错误。
内容的提问来源于stack exchange,提问作者user3103082
相关产品推荐
相关产品推荐

