如何将列表存入Python Pandas DataFrame的单个单元格
问题原因
你原有代码的核心问题有两个:
- 遍历
tmp_df的每一行Category值,同一分类会被重复处理多次 - 直接对
final_df的整列赋值,会覆盖之前所有行的已有数据,自然得不到按分类聚合的结果
解决方案
你可以按Category对tmp_df分组,逐分组处理:对Data、Rank做去重聚合转列表,同时在分组迭代内执行你自定义的Price计算逻辑,最后拼接生成final_df即可,代码如下:
import pandas as pd df = pd.read_csv('myfile.csv') # 筛选符合条件的tmp_df,可根据你的实际需求修改筛选规则 tmp_df = df[df['Acceptable'] == 'Yes'].copy() # 初始化存储最终行的列表,比逐行at赋值效率更高 final_rows = [] # 按Category分组迭代 for category, group_df in tmp_df.groupby('Category'): ################# # 你原来的Price自定义计算逻辑写在这里,基于当前group_df计算得到该分类的price_val ################# # 组装当前分类的行数据 row = { 'Data': group_df['Data'].unique().tolist(), 'Category': category, 'Acceptable': group_df['Acceptable'].iloc[0], 'Rank': sorted(group_df['Rank'].unique().tolist()), 'Price': price_val # 替换为你计算得到的Price值 } final_rows.append(row) # 生成最终的final_df final_df = pd.DataFrame(final_rows)
结果说明
运行后得到的final_df会完全符合你给出的示例格式:Data和Rank列为列表格式,每一行对应一个分类的聚合结果,Price为你自定义计算的数值。
内容的提问来源于stack exchange,提问作者V.Nouri
相关产品推荐
相关产品推荐

