我有两个dfs
:
df1
Person Dept Date Company ID Value
0 Faye Sales 12/31/16 FB Co Inc 123 27
1 Faye Sales 3/31/17 Unknown 123 34
2 Ray Eng 3/31/18 xyz co 345 59
3 Ray HR 6/30/18 XyZ 345 54
4 Jay HR 9/30/18 A 678 53
5 Jim Ops 9/30/16 New 999 8
和 df2
Company Symbol ID
0 FB Inc FB 123
1 XYZ Corp No Symbol 345
2 A LLC AA 678
3 EFG Corp EFG 555
我想要:
ID
Company
in替换in (但如果 in 没有匹配,也保留from )df1
df2
Company
df1
df2
Symbol
从df2
到df1
这样输出看起来像:
Person Dept Date Company Symbol ID Value
0 Faye Sales 12/31/16 FB Inc FB 123 27
1 Faye Sales 3/31/17 FB Inc FB 123 34
2 Ray Eng 3/31/18 XYZ Corp No Symbol 345 59
3 Ray HR 6/30/18 XYZ Corp No Symbol 345 54
4 Jay HR 9/30/18 A LLC AA 678 53
5 Jim Ops 9/30/16 New NaN 999 8
这样做df3 = pd.merge(df1, df2, on='ID', how='left').drop('Company_x', axis=1)
让我接近,但不保留Company
从df1
当没有找到匹配df2
(Nan
VS New
):
Person Dept Date ID Value Company_y Symbol
0 Faye Sales 12/31/16 123 27 FB Inc FB
1 Faye Sales 3/31/17 123 34 FB Inc FB
2 Ray Eng 3/31/18 345 59 XYZ Corp No Symbol
3 Ray HR 6/30/18 345 54 XYZ Corp No Symbol
4 Jay HR 9/30/18 678 53 A LLC AA
5 Jim Ops 9/30/16 999 8 NaN NaN
我该如何解决?
只需更改您的代码 fillna
df3 = pd.merge(df1, df2, on='ID', how='left')
df3.Company_y.fillna(df3.Company_x, inplace=True) # here is fillna with two value
df3=df3.drop('Company_x', 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句