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

如何通过函数高效创建多个DataFrame?

高效批量生成DataFrame的解决方案

问题场景

目前通过手动逐个调用dvd函数生成DataFrame,当需要生成30个这类对象时,重复代码多、效率低,需要更高效的批量处理方式。

解决方案

1. 用字典批量存储(推荐)

将所有目标日期存入一个列表,通过循环调用函数,把每个日期对应的DataFrame存入字典。这种方式便于统一管理,后续访问或操作都更便捷:

# 先把需要处理的日期整理到列表中,示例:
date_list = [date_0, date_1, date_2, ..., date_29]

# 循环生成并存储到字典
df_dict = {}
for idx, date in enumerate(date_list):
    df_dict[f'df_{idx}'] = dvd(date)

# 访问示例:获取第1个DataFrame
df_dict['df_0']

2. 利用pandas分组优化(性能更优)

原函数的逻辑是按DATE筛选数据,直接用pandas的groupby可以一次性完成分组,避免多次重复筛选原数据,性能更高效:

# 按DATE列对原数据分组
grouped_df = port_type.groupby('DATE')

# 生成包含所有日期对应DataFrame的字典(自动去空值可结合dropna)
df_dict = {date: group.dropna() for date, group in grouped_df}

# 如果只需要指定的30个日期,可筛选目标日期:
target_dates = [date_0, date_1, ..., date_29]
df_dict = {date: grouped_df.get_group(date).dropna() for date in target_dates}

3. 动态创建独立变量(不推荐)

如果一定要生成df_0、df_1这类独立命名的变量,可以通过全局命名空间动态创建,但这种方式会降低代码可读性和可维护性,不建议大量使用:

date_list = [date_0, date_1, ..., date_29]
for idx, date in enumerate(date_list):
    globals()[f'df_{idx}'] = dvd(date)

总结

优先选择字典存储或groupby分组的方式,既能提升效率,又便于后续对批量DataFrame进行统一操作(如遍历处理、统计分析等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:52:18