如何将pandas dataframe某列转为列表存入另一dataframe的单元格
问题原因
你的原有代码存在两个核心问题:
- 循环逻辑错误:每次迭代都对
sub_df的整列重复赋值,没有按Category维度做分组处理 - 用到了
set会自动对Data列的值去重,和你示例中需要保留重复值的需求不符
正确实现
不需要手动写循环,直接用pandas内置的groupby分组聚合功能即可,完整代码如下:
import pandas as pd df = pd.read_csv('myfile.csv') # 过滤得到Type为True的临时表 tmp_df = df[df['Type'] == True] # 按Category、Type分组,将同组的Data字段聚合为列表 sub_df = tmp_df.groupby(['Category', 'Type'], as_index=False)['Data'].agg(list) # 调整列顺序和你预期结果一致 sub_df = sub_df.reindex(columns=['Data', 'Category', 'Type'])
如果后续你需要对聚合的列表去重,只需要把聚合逻辑改为:
sub_df = tmp_df.groupby(['Category', 'Type'], as_index=False)['Data'].agg(lambda x: list(set(x)))
运行上述代码得到的sub_df就和你预期的输出完全一致。
内容的提问来源于stack exchange,提问作者V.Nouri
相关产品推荐
相关产品推荐

