如何从一个基于行的数据帧中获取值?

时间:2017-11-22 22:40:07

标签: python pandas numpy

我有两个数据帧如下。

df1:
AreaCode     Amount
1            non
2            non            
3            non            
4            non            
5            non            
6            non            
7            non            
8            non            


df2:
AreaCode     Amount
3            8
4            11
5            17

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

df2:
AreaCode     Amount
1            non
2            non            
3            8            
4            11            
5            17            
6            non            
7            non            
8            non   

我怎样才能实现自己的目标?

2 个答案:

答案 0 :(得分:4)

这样的事情?

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

答案 1 :(得分:1)

你可以这样做:

df2 = df2.set_index('AreaCode')
df1['Amount'] = df1.AreaCode.map(df2['Amount']).fillna(df1.Amount)
df1

输出:

   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