我有两个列不同的数据,我需要搜索和映射新文件中的数据。我正在共享数据格式和所需的输出。
DF1
Ref.X Ref.Y Ref.No
255623 145244651 XF1234
45454544 NA DF7886
1300256655 3511614646 DF8948
5546446166 NA VX4578
1230001556 NA GL8947
4548754545 4548545877 DF7896
3652656 NA XF4895
7884045455 45681247 GL8597
148428 1242154661 XF3564DF2
Type STR1 STR2
ABJH 45656644 145244651
ABJH 844654989 1242154661
BHJH 51654241654 3511614646
BHJH 1230001556 255565656
ABJH 5546446166 8946549849
ABJH 45454544 544895655
BHJH 3652656 565464447现在,我需要从上面的两个数据文件输出。
条件
中。
期望输出
Ref.X Ref.Y Ref.No Int_Type
255623 145244651 XF1234 ABJH
45454544 NA DF7886 ABJH
1300256655 3511614646 DF8948 BHJH
5546446166 NA VX4578 ABJH
1230001556 NA GL8947 BHJH
3652656 NA XF4895 BHJH
148428 1242154661 XF3564 ABJH谢谢。
发布于 2022-05-04 08:24:26
您可以尝试将NA字符串重新设置为<NA>类型,然后使用np.where
df1 = df1.replace({'NA': pd.NA})
df1['Int_Type'] = np.where(df1['Ref.Y'].isna(),
df1['Ref.X'].map(dict(zip(df2['STR1'], df2['Type']))),
df1['Ref.Y'].map(dict(zip(df2['STR2'], df2['Type']))))或者您可以直接与NA字符串进行比较:
df1['Int_Type'] = np.where(df1['Ref.Y'].eq('NA'), Ref.X Ref.Y Ref.No Int_Type
0 255623 1.452447e+08 XF1234 ABJH
1 148428 1.242155e+09 XF3564 ABJH
2 1300256655 3.511615e+09 DF8948 BHJH
3 1230001556 NaN GL8947 BHJH
4 5546446166 NaN VX4578 ABJH
5 45454544 NaN DF7886 ABJH
6 3652656 NaN XF4895 BHJH
7 4548754545 4.548546e+09 DF7896 NaN
8 7884045455 4.568125e+07 GL8597 NaN要使Ref.No与在DF2中找到的“类型”Ref.X或Ref.Y相对应,可以在Int_Type中删除NAN列
df1 = df1.dropna(subset='Int_Type')print(df1)
Ref.X Ref.Y Ref.No Int_Type
0 255623 1.452447e+08 XF1234 ABJH
1 148428 1.242155e+09 XF3564 ABJH
2 1300256655 3.511615e+09 DF8948 BHJH
3 1230001556 NaN GL8947 BHJH
4 5546446166 NaN VX4578 ABJH
5 45454544 NaN DF7886 ABJH
6 3652656 NaN XF4895 BHJHhttps://stackoverflow.com/questions/72109704
复制相似问题