DataFrame分组后如何将各行的列表拼接为一个完整的总列表
错误原因
你当前代码报错是因为对Id列(Series类型)调用apply方法时,lambda函数接收的参数x是每行的列表元素,而非DataFrame或Series对象,不存在values属性,因此触发属性错误。
解决方案
方案1:小数据量快速实现
数据量较小时直接调用Series的sum方法即可,Python列表相加默认执行拼接逻辑:
# df是你分组后得到的DataFrame对象 total_id_list = df['Id'].sum()
方案2:大数据量高性能实现
数据量较大时推荐用itertools.chain处理,避免多次内存拷贝,性能远高于sum方法:
import itertools total_id_list = list(itertools.chain.from_iterable(df['Id']))
方案3:numpy实现
如果你想沿用numpy的拼接逻辑,不需要使用apply,直接传入整个Id列的取值即可:
import numpy as np total_id_list = np.concatenate(df['Id']).tolist()
以上方案运行后均可得到你需要的扁平格式总列表。
内容的提问来源于stack exchange,提问作者stanvooz
相关产品推荐
相关产品推荐

