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

如何基于Pandas DataFrame的唯一entity值创建带df_前缀的子DataFrame

问题:按Entity列唯一值拆分DataFrame并命名为df_前缀的独立DataFrame

首先给出原始DataFrame的定义代码:

import pandas as pd
    
df = pd.DataFrame({
        'entity': ['foo', ' bar', 'baz', 'buzz', 'bar', 'buzz', 'foo', 'foo'],
        'value': [4, 3, 2, 1, 9, 8, 7, 4]
    })

对应的DataFrame内容:

entityvalue
0foo4
1bar3
2baz2
3buzz1
4bar9
5buzz8
6foo7
7foo4

需求:针对entity列的每个唯一值创建独立的DataFrame,命名格式为df_<唯一值>(如df_foo、df_bar等)。


方法1:动态创建全局变量(不推荐,易污染命名空间)

利用Python的globals()函数直接生成对应变量,步骤如下:

# 先清理entity列的前置/后置空格(原始数据中存在' bar'这类带空格的值,确保同实体统一)
df['entity'] = df['entity'].str.strip()

# 遍历每个唯一entity值,生成对应DataFrame变量
for entity in df['entity'].unique():
    globals()[f'df_{entity}'] = df[df['entity'] == entity].reset_index(drop=True)

执行后可直接调用df_foo、df_bar等变量,每个变量对应筛选后的子DataFrame。

方法2:用字典存储(推荐,规范易管理)

如果不想污染全局命名空间,建议用字典统一存储所有子DataFrame,避免变量冲突:

# 清理entity列空格
df['entity'] = df['entity'].str.strip()

# 创建字典存储子DataFrame
df_collection = {}
for entity in df['entity'].unique():
    df_collection[f'df_{entity}'] = df[df['entity'] == entity].reset_index(drop=True)

# 调用示例:df_collection['df_foo']、df_collection['df_bar']

这种方式更安全,也方便后续批量操作所有子DataFrame。

注意:如果不需要清理entity列的空格,可去掉str.strip()步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:02:43