Python-合并数据帧名称包含在列表中
我现在有2个数据帧,我是说2,但我们可以有n个数据帧。数据帧的名称在列表中。我想加入列表中名称存在的所有数据帧Python-合并数据帧名称包含在列表中,python,pandas,Python,Pandas,我现在有2个数据帧,我是说2,但我们可以有n个数据帧。数据帧的名称在列表中。我想加入列表中名称存在的所有数据帧 import pandas as pd data1 = [['Alex',10],['Bob',12],['Clarke',13]] df1 = pd.DataFrame(data1,columns=['Name','Age']) data2 = [['David',10],['Alain',12],['Rob',13]] df2 = pd.DataFrame(data2,colum
import pandas as pd
data1 = [['Alex',10],['Bob',12],['Clarke',13]]
df1 = pd.DataFrame(data1,columns=['Name','Age'])
data2 = [['David',10],['Alain',12],['Rob',13]]
df2 = pd.DataFrame(data2,columns=['Name','Age'])
list = ['df1','df2']
# i want something to work like
df3 = pd.Concat(list)
感谢您在这方面的帮助。如果您想查看结果,请使用:
pd.concat([df1, df2], ignore_index=True)
# Name Age
#0 Alex 10
#1 Bob 12
#2 Clarke 13
#3 David 10
#4 Alain 12
#5 Rob 13
不要使用变量名作为列表。迭代列表以获取dataframe的实例,然后进行连接
lis = ['df1','df2']
df3 = pd.concat([globals()[i] for i in lis]) # to get instance of df1 from string 'df1'
df3
输出
Name Age
Alex 10
Bob 12
Clarke 13
David 10
Alain 12
Rob 13
您需要将名称设置为索引,然后执行concat 或者使用reduce+merge
只需要一个for循环来迭代列表就可以了?它必须是list=['df1','df2',]还是list=[df1,df2]?
list = [df1,df2]
pd.concat([x.set_index('Name') for x in list],axis=1)
Out[270]:
Age Age
Alain NaN 12.0
Alex 10.0 NaN
Bob 12.0 NaN
Clarke 13.0 NaN
David NaN 10.0
Rob NaN 13.0
from functools import reduce
df = reduce(lambda left,right: pd.merge(left,right,on=['Name'],
how='outer'), list)
df
Out[275]:
Name Age_x Age_y
0 Alex 10.0 NaN
1 Bob 12.0 NaN
2 Clarke 13.0 NaN
3 David NaN 10.0
4 Alain NaN 12.0
5 Rob NaN 13.0