如何从Python中的列表中捕获数据帧?

如何从Python中的列表中捕获数据帧?,python,pandas,list,dataframe,global,Python,Pandas,List,Dataframe,Global,我想在Python中组合具有不同列的数据帧 import pandas as pd first_df = pd.DataFrame({ 'a':np.random.randn(6), 'b':np.random.choice( [5,7,np.nan], 6), 'c':np.random.choice( ['panda','python','shark'], 6)}) second_df = pd.DataFrame({ 'a':np.random.r

我想在Python中组合具有不同列的数据帧

import pandas as pd 

first_df = pd.DataFrame({ 
    'a':np.random.randn(6),
    'b':np.random.choice( [5,7,np.nan], 6),
    'c':np.random.choice( ['panda','python','shark'], 6)})

second_df = pd.DataFrame({ 
    'a':np.random.randn(6),
    'b':np.random.choice( [5,7,np.nan], 6)})

third_df = pd.DataFrame({ 
    'a':np.random.randn(6)})
我有一个数据帧列表

df_list = %who_ls DataFrame 
print(len(df_list))
df_list
但我不知道如何捕获数据帧对象本身,以便将它们组合起来:

pd.concat(df_list, axis=0, ignore_index=True)

我不知道为什么要使用who_ls,如果要组合数据帧,请按如下方式列出它们:

df = pd.concat([first_df, second_df, third_df])
编辑:我强烈建议您避免使用who_ls和globals()来做您想做的事情,如果您将来更改代码,可能会出现一些问题,而且可读性不强。但它会像一些人在评论中已经建议的那样起作用。
但是,请考虑在加载/创建对象时列出一个对象列表,以避免这一点。

< P>可以使用:

获取存储在内存中的所有DFS的列表。
df_list = [var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
print(df_list)
>> ['first_df', 'second_df', 'third_df']

你认为像
df_list[0]
这样的索引会返回一个字符串吗?@jezrael index返回一个字符串,因为df_list是一个字符串列表。我想要数据帧对象本身。
数据帧列表=[globals()[df\u name]用于数据帧列表中的数据帧名称]
@MustafaAydın谢谢。它起作用了。它起作用了,但我不想键入数据帧名称,因为我正在处理大量数据帧。@Hamideh您可以使用globals()从其名称中提取对象,但我认为有一种更干净的方法,大量数据帧来自何处?也许你应该在那里抓住他们。