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

如何将DataFrame中多列分别与date列配对生成子数据框

解决方法:用字典存储子DataFrame(推荐)

你的问题在于循环里只是重新赋值了变量i,并没有把每个配对后的子DataFrame以对应Var的名字保存下来——每次循环都会覆盖i的内容,最后只留下最后一列的结果。

最规范且易维护的方式是用字典来存储所有子DataFrame,这样既能通过列名快速访问,也不会污染全局命名空间:

# 初始化空字典用于存储子DataFrame
var_subsets = {}

# 遍历所有列,跳过date列本身
for col_name in df.columns:
    if col_name != "date":
        # 提取date和当前列的子集,用copy避免后续修改原DataFrame时影响子集
        var_subsets[col_name] = df[["date", col_name]].copy()

之后你就可以通过键名访问对应的子DataFrame,比如var_subsets["Var_1"]就能拿到Var_1和date的配对数据。


可选:创建单独命名的变量(不推荐)

如果一定要生成df_Var_1、df_Var_2这类单独的变量,可以用globals()函数,但这种方式会让变量分散在全局空间,当Var列很多时很难管理,所以不建议:

for col_name in df.columns:
    if col_name != "date":
        # 生成以"df_"开头的变量名,比如df_Var_1
        globals()[f"df_{col_name}"] = df[["date", col_name]].copy()

运行后你就能直接调用df_Var_1、df_Var_2等变量了。


原代码失效的原因

你原来的循环里,i一开始是列名的字符串(比如"Var_1"),然后执行i = df.loc[:, ['date', i]]时,只是把i这个变量重新赋值成了对应的子DataFrame,但这个赋值只会覆盖当前循环的i值,循环结束后i只会保留最后一次循环的结果,并没有把每个子DataFrame都保存下来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:03:12