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

如何将字典内的DataFrame以Station ID命名为独立数据框?

按Station ID拆分DataFrame并命名的解决方案

首先,你第一个写的 dfs = dict(list(df.groupby('Station'))) 其实已经完美实现了按Station ID分组的需求——字典的键就是对应的Station ID,比如要调用某个站点的数据,直接写 dfs["你的Station ID"] 就行(比如 dfs["ST001"]),这种方式比单独创建一堆变量更整洁,尤其是数据集大、站点多的时候,方便批量操作和管理。

如果一定要像R里那样把每个子DataFrame做成单独的变量(直接用Station ID或带前缀的名字调用),可以用Python的globals()函数动态创建:

方法1:直接用Station ID作为变量名

# 遍历groupby后的结果,自动生成变量
for station_id, sub_df in df.groupby('Station'):
    globals()[station_id] = sub_df

执行后,直接输入Station ID(比如ST001)就能调用对应的DataFrame。但要注意:如果Station ID是纯数字、包含空格/特殊字符(比如ST-001),会不符合Python变量命名规则,这时候可以给变量加前缀:

方法2:给变量名加前缀(避免命名问题)

for station_id, sub_df in df.groupby('Station'):
    # 生成类似df_ST001、df_ST002的变量名
    globals()[f"df_{station_id}"] = sub_df

为什么更推荐用字典管理?

如果站点数量多,单独创建变量会导致全局环境混乱,不好维护。而用字典的话,你可以轻松批量操作所有子DataFrame,比如批量保存为CSV:

for station_id, sub_df in dfs.items():
    sub_df.to_csv(f"{station_id}_data.csv", index=False)

另外,你第二个尝试的代码可以改成下面这样,让字典的键直接是Station ID,而不是数字序号:

dct = {}
for station_id in df['Station'].unique():
    dct[station_id] = df.loc[df['Station'] == station_id]

不过groupby的写法比这种手动筛选更高效,尤其是处理大型数据集的时候。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:30:32