我可以使用for循环来连接变量的数据帧吗?

时间:2019-11-22 04:15:12

标签: python pandas dataframe

我想通过for循环根据输入数字连接数据框

我的代码:

combine_df = pd.DataFrame()
df1= pd.DataFrame()
df2= pd.DataFrame()
df3= pd.DataFrame()
df4= pd.DataFrame()
df5= pd.DataFrame()

number = 5
for i in range(1,number):
    master_df = pd.concat([master_df, "df"+str(i)],ignore_index=True,sort=False)

以下是错误

TypeError: cannot concatenate object of type "<class 'str'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid

我要执行此操作的原因是我想基于输入数n创建n个数据帧并连接n个数据帧

例如如果数字= 10,我可以合并10个数据帧

1 个答案:

答案 0 :(得分:2)

您可以像这样进行合并,但是我不确定您是否会获得预期的输出。您还必须使用eval。这是我正在执行的一些示例数据的示例:

d                                                                                                                                                                                                
#{'foo': ['a', 'b', 'c'], 'bar': ['d', 'e', 'f']}

e                                                                                                                                                                                                
#{'car': ['ford', 'honda', 'acura'], 'what': ['huh', 'yeah', 'ok']}

combine_df = pd.DataFrame()
df1= pd.DataFrame()
df2= pd.DataFrame(d)
df3= pd.DataFrame()
df4= pd.DataFrame(e)
df5= pd.DataFrame()

number = 5
for i in range(1,number):
    master_df = pd.concat([master_df, eval("df"+str(i))],ignore_index=True,sort=False)

master_df
#Out[2284]: 
#   foo  bar    car  what
#0    a    d    NaN   NaN
#1    b    e    NaN   NaN
#2    c    f    NaN   NaN
#3  NaN  NaN   ford   huh
#4  NaN  NaN  honda  yeah
#5  NaN  NaN  acura    ok