You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas从嵌套DataFrame提取柴油价格生成字典新列?

解决方案

先说说你原来代码的问题:最后一行用dfnew.apply(...)的时候,lambda里的x是dfnew的单行数据,不是整个子DataFrame,遍历x会拿到每个列的具体值(比如CashPrice是整数),自然会报“int不可迭代”的错。而且用iterrows循环赋值效率低,还容易出索引警告,换用apply直接处理整个列更靠谱。

直接用下面的代码替换你的循环:

import pandas as pd

def extract_diesel_changes(sub_df):
    # 把单元格里的内容转成DataFrame
    df = pd.DataFrame(sub_df)
    # 筛选柴油行,然后转成{时间:价格}的字典
    diesel_rows = df[df['ProductName'] == 'DIESEL']
    return diesel_rows.set_index('LastPriceChangeDateTime')['CashPrice'].to_dict()

# 生成新列
df['diesel_price_change'] = df['FuelPrices'].apply(extract_diesel_changes)

代码说明:

  • extract_diesel_changes函数专门处理每个FuelPrices单元格的子DataFrame:
    1. 先把输入的子数据转成标准DataFrame;
    2. 筛选出ProductName为DIESEL的行;
    3. 用set_index把时间列设为索引,再通过to_dict()直接生成{时间:现金价格}的字典。
  • 最后用df['FuelPrices'].apply(...)批量处理所有行,直接生成新列,比循环高效得多,也不会有索引问题。

内容的提问来源于stack exchange,提问作者oToMaTiX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:05:45