【问题标题】:Pandas - List of Dataframe Names?Pandas - 数据框名称列表?
【发布时间】:2017-12-03 18:12:14
【问题描述】:

我进行了很多搜索,但找不到任何相关内容。是否有内置函数可以自动生成我创建的 Pandas 数据框列表?

例如,我创建了三个数据框:df1df2df3

现在我想要一个类似的列表:df_list = [df1, df2, df3],这样我就可以遍历它。

【问题讨论】:

  • 为什么不带字符串标记的df_list = [df1, df2, df3]
  • 你说得对——我就是这个意思——我更新了问题
  • Pandas 不会为您跟踪您创建的 DataFrame。也许有一些 hacky 方法来获取它们,但通常你应该只创建一个列表并将 DataFrames 添加到其中,只要你创建一个你想要“保留”的数据框。
  • 我就是这么想的,因为我在这个主题上找不到任何东西。

标签: python list pandas


【解决方案1】:

我获取它们的 hacky 方式 (-:

Python 提供了一个内置的globals,它返回一个字典,其中键是命名变量,值是对象本身。我们可以使用列表推导并遍历字典的所有值,只获取pd.DataFrame类型的值

d = globals()
df_list = [v for k, v in d.items() if isinstance(v, pd.DataFrame)]

【讨论】:

  • 后续问题:返回的列表在引号中包含 df 名称。有没有办法返回一个不带引号的列表?当前输出:['df1','df2','df3'] 首选:[df1,df2,df3]
  • 如果你使用我的代码,你根本就不应该有名字。您应该将实际对象作为列表元素。
  • 你是对的。重新阅读我的问题后,我还不够清楚。我的目标是返回一个数据框名称列表,然后我可以用它来迭代。
  • 如果你这样做,你会得到类似['df1']的东西。这就是你想要的。然后你必须使用eval(df_list[0]) 来访问它。将其保留为字典df_dict = {k: v for k, v in d.items() if isinstance(v, pd.DataFrame)} 会更好。然后你可以拥有名称和数据框对象。
  • @WaltReed 实际上,您可以制作列表和字典,两全其美。 df_dict[df_list[0]]
【解决方案2】:

%who_ls 数据帧

这是作为列表加载到内存中的所有数据帧

all_df_in_mem = %who_ls 数据帧

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 2020-12-02
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多