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

如何批量为59个参与者DataFrame添加AcuteLegs_3days列?

批量为多个DataFrame添加目标列的解决方案

报错原因

你定义的participants列表里存储的是DataFrame的名称字符串(比如'df_participant1'),而非DataFrame对象本身。循环时df是字符串类型,用df['AcuteLegs_1day']会触发字符串索引必须为整数的错误——字符串只能用数字索引位置,不能用列名。

解决方法

方法1:直接存储DataFrame对象到列表

将participants列表改为存储实际的DataFrame对象,而非字符串名称:

# 替换成你实际的DataFrame对象列表
participants = [df_participant1, df_participant2, df_participant3, ...]

for df in participants:
    # 合并两步操作,更简洁
    df['AcuteLegs_3days'] = df["AcuteLegs_1day"].rolling(3).sum().shift(1)

方法2:通过变量名动态获取DataFrame对象

如果必须保留字符串列表(比如从外部读取变量名),可以用globals()或locals()获取全局/局部命名空间中的DataFrame对象:

participants = ['df_participant1', 'df_participant2', ...]

for df_name in participants:
    # 从全局命名空间中获取对应DataFrame
    df = globals()[df_name]
    df['AcuteLegs_3days'] = df["AcuteLegs_1day"].rolling(3).sum().shift(1)

方法3:用字典统一管理DataFrame(推荐)

更规范的做法是把所有参与者的DataFrame放到字典中,键为参与者标识,值为对应DataFrame,后续管理和批量操作更便捷:

# 初始化字典,存储所有参与者DataFrame
participant_dfs = {
    'participant1': df_participant1,
    'participant2': df_participant2,
    # ... 其他57个DataFrame
}

# 循环处理字典中的每个DataFrame
for df in participant_dfs.values():
    df['AcuteLegs_3days'] = df["AcuteLegs_1day"].rolling(3).sum().shift(1)

内容的提问来源于stack exchange,提问作者E Jager de

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:55:48