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

如何通过for循环过滤Pandas DataFrame以生成多个子DataFrame

实现按产品拆分独立DataFrame的方案

没问题,我来帮你搞定这个需求!要遍历product列的唯一值并生成对应产品的独立DataFrame,其实很简单,下面给你两种实用的实现方式:

方式一:用字典存储所有产品的DataFrame(推荐)

这种方式最灵活,后续可以通过产品名称快速调取对应的DataFrame,不会造成变量名混乱:

import pandas as pd

# 你的原始DataFrame
df = pd.DataFrame({
 'date': ['2001-01-01', '2001-02-01', '2001-01-01', '2001-02-01', '2001-02-01', '2001-03-01'],
 'product': ['A', 'A', 'B', 'B', 'C', 'C'],
 'value': [2.5, 2.6, 1.5, 1.6, 3.2, 3.4]
})

# 创建空字典用于存储各个产品的DataFrame
product_dfs = {}

# 遍历product列的唯一值
for product in df['product'].unique():
    # 筛选当前产品的所有行,存入字典;用copy避免后续修改影响原始数据
    product_dfs[product] = df[df['product'] == product].copy()

# 验证结果:打印产品A的DataFrame
print("产品A的DataFrame:")
print(product_dfs['A'])

运行后输出产品A的DataFrame:

date product  value
0 2001-01-01       A    2.5
1 2001-02-01       A    2.6

后续要访问其他产品的数据,直接用product_dfs['B']、product_dfs['C']即可,非常便捷。

方式二:直接创建独立命名的变量

如果你确实需要每个产品对应单独的变量(比如df_A、df_B),可以这样实现:

import pandas as pd

df = pd.DataFrame({
 'date': ['2001-01-01', '2001-02-01', '2001-01-01', '2001-02-01', '2001-02-01', '2001-03-01'],
 'product': ['A', 'A', 'B', 'B', 'C', 'C'],
 'value': [2.5, 2.6, 1.5, 1.6, 3.2, 3.4]
})

for product in df['product'].unique():
    # 动态创建变量名,比如df_A、df_B
    globals()[f'df_{product}'] = df[df['product'] == product].copy()

# 验证结果:打印df_B
print("产品B的DataFrame:")
print(df_B)

输出产品B的DataFrame:

date product  value
2 2001-01-01       B    1.5
3 2001-02-01       B    1.6

不过这种方式要注意,如果产品名称较多,会生成大量零散变量,不利于代码维护,所以更推荐第一种字典存储的方式~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:24:35