【问题标题】:Yield multiple empty dataframes by a function in Python通过 Python 中的函数生成多个空数据帧
【发布时间】:2021-02-09 18:08:32
【问题描述】:

我想通过 Python 中的函数生成多个空数据帧。

import pandas as pd

df_list = []

def create_multiple_df(num):

  for i in range(num):
    df = pd.DataFrame()
    df_name = "df_" + str(num)
    exec(df_name + " = df ")
    df_list.append(eval(df_name))
    
  for i in df_list:
    yield i

例如当我create_multiple_df(3) 时,我希望返回df_1df_2df_3

但是,它不起作用。

我有两个问题,

  1. 如何在一个列表中存储多个数据帧(即不评估数据帧的内容)?

  2. 如何从一个列表中产生多个可变元素?

谢谢!

【问题讨论】:

  • 你的意思是如何创建字典? dfs = {'df1': pd.DataFrame(), 'df2': pd.DataFrame(), ...}

标签: python pandas function return yield


【解决方案1】:

非常很可能你不想拥有df_1df_2df_3 ...等。这通常是初学者出于某种原因追求的设计,但相信我认为字典或简单的列表都可以解决问题,而无需保存不同的变量。

在这里,听起来您只是想要一个列表理解:

dfs = [pd.DataFrame() for _ in range(n)]

这将创建n 空数据框并将它们存储在列表中。要检索或修改它们,您可以简单地访问它们的位置。这意味着您可以将数据框保存在dfs 列表中并使用dfs[1] 获取/编辑它,而不是将数据框保存在变量df_1 中。

另一种选择是字典理解:

dfs = {i: pd.DataFrame() for i in range(n)}

它以类似的方式工作,您可以通过dfs[0]dfs[1]访问它(甚至可以使用真实姓名,例如{f'{genre}': pd.DataFrame() for genre in ['romance', 'action', 'thriller']}。在这里,您可以通过dfs['romance']dfs['thriller']来检索相应的df)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多