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

使用zip结合日期列表与DataFrame报'str无loc属性'错误如何解决?

问题原因

你对单个DataFrame直接做迭代操作时,pandas默认返回的是各列的列名字符串,而非你预期的子DataFrame/行数据,所以循环中拿到的df实际是time、value这类列名字符串,自然不存在loc属性触发报错。
你的代码逻辑是建立在df_dataset是「多个子DataFrame组成的列表」的假设上,但你已经确认它是单个DataFrame,所以迭代逻辑完全不符合预期。

修复方案

最优方案:直接批量赋值(无需循环)

你要实现的「给每行匹配对应日期」的需求,直接一行代码就能完成,性能远高于循环写法:

df_dataset['date'] = pd.to_datetime(date_list)

该方法基于pandas的向量化操作特性,会自动按行顺序匹配date_list中的日期,只要你确认二者长度完全一致就可以直接使用。

可选方案:逐行处理写法(仅当你有额外逐行操作需求时使用)

如果你的实际场景确实需要逐行处理数据,可以用iterrows()遍历行,同时按索引取对应日期:

final_dataset_list = []
for idx, (_, row) in enumerate(df_dataset.iterrows()):
    # 把单行Series转为单行DataFrame
    current_df = row.to_frame().T
    current_df['date'] = pd.to_datetime(date_list[idx])
    final_dataset_list.append(current_df)
# 合并所有行得到最终数据集
final_dataset = pd.concat(final_dataset_list, ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:27:03