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

在Pandas中用For Loop批量创建DataFrame遇报错求助

解决按日期循环拆分DataFrame的报错问题

我懂你想把重复的手动拆分操作改成循环来简化代码的需求,先看你原来的手动实现是完全没问题的:

tweet24042018 = tweets.loc[tweets['date2'] == '24042018'].copy()
tweet23042018 = tweets.loc[tweets['date2'] == '23042018'].copy()
tweet22042018 = tweets.loc[tweets['date2'] == '22042018'].copy()

但你尝试的循环代码之所以报错,核心问题是Python不允许用['tweet'+f'{key}'] = ...这种列表形式的语法来动态创建变量——这本身就是不符合Python语法规则的写法。

推荐方案:用字典存储拆分后的DataFrame

动态生成独立变量其实不是最佳实践(容易污染命名空间,后期维护起来很麻烦),更规范的做法是用字典来统一管理所有拆分后的子DataFrame:

# 先获取所有唯一的日期值(如果collect已经定义好可以直接用,否则从DataFrame提取)
collect = tweets['date2'].unique()

# 创建空字典存放结果
tweet_dict = {}

# 循环完成拆分
for key in collect:
    tweet_dict[f'tweet{key}'] = tweets.loc[tweets['date2'] == key].copy()

之后要访问某一天的数据,直接通过字典的键调用即可:

# 示例:获取24042018对应的推文数据
tweet_dict['tweet24042018']

如果一定要生成独立变量(不推荐)

如果你确实需要单独的变量名,可以借助globals()函数操作全局命名空间来实现,但请谨慎使用(可能会和现有变量重名):

collect = tweets['date2'].unique()

for key in collect:
    globals()[f'tweet{key}'] = tweets.loc[tweets['date2'] == key].copy()

循环结束后,你就能像手动创建的那样直接使用tweet24042018、tweet23042018这类变量了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:22:41