【问题标题】:concatenate/merge multiple dataframes - pandas连接/合并多个数据框 - 熊猫
【发布时间】:2023-02-10 21:24:28
【问题描述】:

我有多个要连接的数据框。其中一些没有特定的列,因此应填写 NA。

df1_1 = pd.DataFrame({'id':[1,1,2,2,3,3], 'age':[22,22,55,55,53,53], 'group':1,'y':[1,2,3,4,5,6]})
df1_2 = pd.DataFrame({'id':[1,1,2,2,3,3], 'age':[22,22,55,55,53,53], 'group':1,'w':[7,8,9,10,11,12]})

df2 = pd.DataFrame({'id':[4,4,5,5], 'age':[39,39,54,54], 'group':2,'y':[1,2,3,4]})
df2_2 = pd.DataFrame({'id':[4,4,5,5], 'age':[39,39,54,54], 'group':2,'w':[5,6,7,8]})

df3 = pd.DataFrame({'id':[1,1,6,6,7,7,8,8], 'age':[23,23,63,63,43,43,25,25],'group':3,'w':[1,2,3,4,5,6,7,8]})

期望的输出:

id  age  group  y   w
1   22      1   1   7
1   22      1   2   8
2   55      1   3   9
2   55      1   4  10
3   53      1   5  11
3   53      1   6  12
4   39      2   1   5
4   39      2   2   6
5   54      2   3   7
5   54      2   4   8
1   23      3   1  NA
1   23      3   2  NA
6   63      3   3  NA
6   63      3   4  NA
7   43      3   5  NA
7   43      3   6  NA
8   25      3   7  NA
8   25      3   8  NA 

我试过

from functools import reduce
dfs = [df1_1,df1_2,df2_1,df2_2,df3]
df_merged = reduce(lambda  left,right: pd.merge(left,right,on=['id','group','age'], how='outer'), dfs)
df_merged = pd.concat(dfs, join='outer', axis=0)

但我的尝试都没有奏效

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您应该尝试使用 np.nan 作为您的 NA。 nan 不是一个数字,所以它有点像 NA。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-03
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      相关资源
      最近更新 更多