内部连接并更新Pandas中的列

时间:2018-01-16 02:48:20

标签: python pandas

我有两个dataframe个。我需要根据其他dataframe的条件更新一个dataframe

数据框1

Tracking_Nbr    Flag
770310517324    Y
787757679168    Y
770320639804    Y
787819140020    Y
787806525476    Y
787817272220    N
787787101424    N

数据框2

Tracking_Nbr Class  Flag
770310517324    B   Y
787757679168    B   Y
770320639804    B   Y
787819140020    B   Y
787806525476    B   Y
787817272220    R   N
787787101424    R   N

更新条件

a.  If Flag == ‘Y’ and Class == ‘B’, change your data  Flag to ‘N’ in dataframe A
b.  If Flag == ‘N’ and Class == ‘R’, change your data  Flag to ‘Y’ in dataframe A

如何做到这一点?

1 个答案:

答案 0 :(得分:0)

你可以试试这个。

df2['Updated']=np.where((df2.Class=='B')&(df2.Flag=='Y'),'N',np.where((df2.Class=='R')&(df2.Flag=='N'),'Y',df2.Flag))
df1.Flag=df1['Tracking_Nbr'].map(df2.set_index('Tracking_Nbr').Updated)
df1
Out[594]: 
   Tracking_Nbr Flag
0  770310517324    N
1  787757679168    N
2  770320639804    N
3  787819140020    N
4  787806525476    N
5  787817272220    Y
6  787787101424    Y