我有两个数据框Overall
和df2
。
Time ID_1 ID_2
2020-02-25 09:24:14 140209 81625000
2020-02-25 09:24:14 140216 91625000
2020-02-25 09:24:18 140219 80250000
2020-02-25 09:24:18 140221 90250000
25/02/2020 09:42:02 143982 39075000
df2
ID_1 ID_2 Time Match?
140209 81625000 25/02/2020 09:24:14 no_match
143983 44075000 25/02/2020 09:42:02 no_match
143982 39075000 25/02/2020 09:42:02 match
143984 39075000 25/02/2020 09:42:02 no_match
我想检查df2
是否存在于Overall
中,如果是,则该行中的df2.Match?
是否匹配。如果匹配,则返回一个新列为“是”,否则返回“否”。
我尝试过:
Overall_1 = pds.merge(Overall, df2, on=….., how='left', indicator= 'Exist')
Overall_1.drop([...], inplace = True, axis =1 )
Overall_1['Exist']= np.where((Overall_1.Exist =='both') & (Overall_1.Match? == match), 'yes', 'no')
但是存在一个错误
TypeError: Cannot perform 'rand_' with a dtyped [bool] array and scalar of type [float]
因此,最终生成的
Overall_1
数据框应如下所示:Time ID_1 ID_2 Exist
2020-02-25 09:24:14 140209 81625000 No
2020-02-25 09:24:14 140216 91625000 NaN
2020-02-25 09:24:18 140219 80250000 NaN
2020-02-25 09:24:18 140221 90250000 Nan
25/02/2020 09:42:02 143982 39075000 Yes