如何在pandas中连接两个具有不同列数的帧?

时间:2017-04-24 02:05:26

标签: python pandas

我有以下数据帧:

数据框1:

|---------------------|------------------|
|      property_id    |        beds      |
|---------------------|------------------|
|          1          |         1        |
|---------------------|------------------|
|          2          |         2        | 
|---------------------|------------------|

数据框2:

|---------------------| 
|      property_id    |
|---------------------|
|          3          |
|---------------------|
|          4          |
|---------------------|

我想要制作的是以下数据帧:

|---------------------|------------------|
|      property_id    |        beds      |
|---------------------|------------------|
|          1          |         1        |
|---------------------|------------------|
|          2          |         2        | 
|---------------------|------------------|
|          3          |         0        |
|---------------------|------------------|
|          4          |         0        | 
|---------------------|------------------|

我想要的是连接两个Dataframe,前者的列数多于后者,但后者的所有列都在前者中。当后一个数据帧中不存在该列时,我想将默认值设置为0.如何实现此目的?

df1 = pd.DataFrame({'property_id': [1, 2], 'beds': [1, 2]})
df2 = pd.DataFrame({'property_id': [3, 4]})

我几乎没有大熊猫的经历,所以我该怎么办?

2 个答案:

答案 0 :(得分:7)

您可以使用pandas.concatappend方法,这两种方法都会为子数据框中不存在的列生成NA,用零填充它们,你可以使用fillna(0)

df1.append(df2).fillna(0)

#  beds     property_id
#0  1.0          1
#1  2.0          2
#0  0.0          3
#1  0.0          4


pd.concat([df1, df2]).fillna(0)

#  beds     property_id
#0  1.0         1
#1  2.0         2
#0  0.0         3
#1  0.0         4

答案 1 :(得分:2)

df1.append(df2.reindex_axis(df1.columns, 1, fill_value=0))

优点是应该保留整数类型