我有以下数据帧:
数据框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]})
我几乎没有大熊猫的经历,所以我该怎么办?
答案 0 :(得分:7)
您可以使用pandas.concat
或append
方法,这两种方法都会为子数据框中不存在的列生成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))
优点是应该保留整数类型