【发布时间】:2021-05-27 21:27:06
【问题描述】:
我尝试使用合并函数在两个列键上合并两个数据帧,但它返回某些行的 NaN。我不确定出了什么问题。你能告诉我有什么问题吗?谢谢!
df1
VR Ccy_1 Ccy_2 Qualifier Ccy_Gp1 Ccy_Gp2
0 2.864298e+08 BRL KRW BRLKRW Category 2 Category 2
1 9.547661e+08 BRL USD BRLUSD Category 2 Category 1
2 1.145719e+08 CNY SGD CNYSGD Category 2 Category 2
3 -3.819065e+08 EUR QAR EURQAR Category 1 Category 3
4 1.183910e+09 GBP USD GBPUSD Category 1 Category 1
5 -1.432149e+08 HKD KRW HKDKRW Category 2 Category 2
6 -1.145719e+08 RUB TRY RUBTRY Category 2 Category 2
df2
Ccy_Gp1 Ccy_Gp2 Vega Concentration threshold (USD)
0 Category 1 Category 1 3900000000
1 Category 1 Category 2 1400000000
2 Category 1 Category 3 640000000
3 Category 2 Category 2 690000000
4 Category 2 Category 3 440000000
5 Category 3 Category 3 280000000
6 Category 2 Category 1 1400000000
7 Category 3 Category 1 640000000
8 Category 3 Category 2 440000000
这是我的代码
df=pd.merge(df1,df2,on=['Ccy_Gp1','Ccy_Gp2'], how='left')
返回的数据帧
VR Ccy_1 Ccy_2 Qualifier Ccy_Gp1 Ccy_Gp2 Vega Concentration threshold (USD)
0 2.864298e+08 BRL KRW BRLKRW Category 2 Category 2 6.900000e+08
1 9.547661e+08 BRL USD BRLUSD Category 2 Category 1 NaN
2 1.145719e+08 CNY SGD CNYSGD Category 2 Category 2 6.900000e+08
3 -3.819065e+08 EUR QAR EURQAR Category 1 Category 3 NaN
4 1.183910e+09 GBP USD GBPUSD Category 1 Category 1 3.900000e+09
5 -1.432149e+08 HKD KRW HKDKRW Category 2 Category 2 6.900000e+08
6 -1.145719e+08 RUB TRY RUBTRY Category 2 Category 2 6.900000e+08
【问题讨论】:
-
这意味着
df1中的特定鱼子在df2中与'Ccy_Gp1','Ccy_Gp2不匹配 -
查看pandas.pydata.org/pandas-docs/stable/user_guide/merging.html,了解合并的工作原理可能会有所帮助。也许你正在寻找 how='inner'
-
对于
Category 2 Category 1和Category 1 Category 3组合,他们应该能够在这两个键上与df2 匹配?我想知道这是否是由于格式问题,因为列 'Ccy_Gp1` 和Ccy_Gp2中的数据没有对齐 -
@Cryckx 我尝试使用内部,但它也不起作用
-
你能用
print(df.to_string())打印整个数据框吗