我有两个数据框,如下所示。

df1:
区号金额
1非
2非
3非
4非
5非
6非
7非
8非


df2:
区号金额
3 8
4 11
5 17


我想得到如下数据框的答案。

df2:
区号金额
1非
2非
3 8
4 11
5 17
6非
7非
8非


我如何实现我的目标?

最佳答案

这样的事情?

df1.set_index('AreaCode').replace({'non':np.nan}).combine_first(df2.set_index('AreaCode')).reset_index()
Out[58]:
   AreaCode  Amount
0         1     NaN
1         2     NaN
2         3     8.0
3         4    11.0
4         5    17.0
5         6     NaN
6         7     NaN
7         8     NaN


或者我们使用merge

df1.merge(df2,on='AreaCode',how='left').ffill(1).drop('Amount_x',1).rename(columns={'Amount_y':'Amount'})
Out[69]:
  AreaCode Amount
0        1    non
1        2    non
2        3      8
3        4     11
4        5     17
5        6    non
6        7    non
7        8    non

08-24 21:23