如何基于Pandas DataFrame所有列的值生成列表并添加为新列?
将Pandas DataFrame行数据合并为列表并添加为新列
要把df1每行的多列数据合并成列表,再添加为原DataFrame的新列,有两种简单高效的方法:
方法1:使用apply+tolist(直观易懂)
直接对每行数据调用tolist(),将整行转成列表后赋值给新列:
import pandas as pd df1 = pd.DataFrame(list(zip([1,2,3], [4,5,6], [7,8,9])), columns=['numbers', 'numbers2', 'numbers3']) # 添加新列 df1['list_of_numbers'] = df1.apply(lambda row: row.tolist(), axis=1)
方法2:使用agg方法(性能更优)
如果处理的是大数据集,用Pandas内置的agg方法效率更高:
# 替换apply的写法,效果相同但速度更快 df1['list_of_numbers'] = df1.agg(list, axis=1)
自定义列范围
如果不需要把所有列都转成列表,只需指定目标列即可:
# 仅将numbers和numbers2列转为列表 df1['partial_list'] = df1[['numbers', 'numbers2']].agg(list, axis=1)
执行后,df1就会新增list_of_numbers列,其中每个元素都是对应行的数值列表,和你给出的df2结构完全匹配。
内容的提问来源于stack exchange,提问作者windyvation
相关产品推荐
相关产品推荐

