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

如何在Python循环中按迭代器名称创建对应DataFrame?

解决Pandas循环生成对应命名DataFrame的问题

方法一:用字典存储(推荐)

用字典统一管理各指标的DataFrame,既避免变量覆盖,也方便后续批量操作:

import pandas as pd

# 示例原始DataFrame
original_df = pd.DataFrame({
    'ISO3': ['USA', 'CHN', 'JPN'],
    'hdi_1990': [0.8, 0.6, 0.85],
    'hdi_2020': [0.92, 0.76, 0.91],
    'ihdi_1990': [0.75, 0.55, 0.8],
    'ihdi_2020': [0.88, 0.7, 0.87],
    'gnipc_1990': [20000, 3000, 25000],
    'le_2020': [78, 76, 84]
})

indicators = ['hdi','ihdi','gnipc','le']
# 初始化空字典存储结果
indicator_dfs = {}

for ind in indicators:
    # 筛选ISO3列和当前指标的所有年度列
    target_cols = ['ISO3'] + [col for col in original_df.columns if col.startswith(f"{ind}_")]
    # 将生成的DataFrame存入字典,键为指标名+_df
    indicator_dfs[f"{ind}_df"] = original_df[target_cols].copy()

# 调用示例:获取hdi对应的DataFrame
print(indicator_dfs['hdi_df'])

方法二:创建全局命名变量(不推荐)

如果一定要生成独立命名的变量(如hdi_df),可以用globals()函数直接在全局命名空间创建变量,但这种方式容易造成命名混乱,不建议在复杂项目中使用:

for ind in indicators:
    target_cols = ['ISO3'] + [col for col in original_df.columns if col.startswith(f"{ind}_")]
    # 直接创建对应名称的全局变量
    globals()[f"{ind}_df"] = original_df[target_cols].copy()

# 调用示例:直接使用变量名
print(hdi_df)

为什么推荐用字典?

  • 避免全局命名空间被大量零散变量占用,代码更整洁
  • 可通过循环遍历字典,轻松实现批量处理(比如统一保存所有指标的DataFrame到文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:25:07