[英]Merging isn't working as expected for a column of dtype float64
I am working with two dataframes which looks like below; just small chunk of the whole data frame. The problem is if i do an inner
加入使用 Merge function 我得到一個空的結果。
DF1 COURSE_KEY CORP_ID 2.97E+11 23096 2.97E+11 23097 2.97E+11 10987 2.97E+11 560989 2.97E+11 34678 DF2 COURSE_KEY COURSE_UNIQUE_KEY COURSE_ID CERTIFICATION_ID 2.97E+11 4077 WW_13456 WFT-CK-027 2.97E+11 5789 ww_13456 NL-WFT-12121
df3 = pd.merge(Df1,Df2, on='COURSE_KEY' how='inner')
合並浮點值可能不是最佳選擇,因為浮點值理論上是無限的。
對於實際使用,我們可以使用 int:
n = 100
df1['COURSE_KEY'] = np.round(df1.COURSE_KEY*n).astype(int)
df2['COURSE_KEY'] = np.round(df2.COURSE_KEY*n).astype(int)
df = pd.merge(df1, df2, how = 'inner', on = 'COURSE_KEY')
df['COURSE_KEY'] = df.COURSE_KEY/n
df
Output
COURSE_KEY CORP_ID COURSE_UNIQUE_KEY COURSE_ID CERTIFICATION_ID
0 2.970000e+11 23096 4077 WW_13456 WFT-CK-027
1 2.970000e+11 23096 5789 ww_13456 NL-WFT-12121
2 2.970000e+11 23097 4077 WW_13456 WFT-CK-027
3 2.970000e+11 23097 5789 ww_13456 NL-WFT-12121
4 2.970000e+11 10987 4077 WW_13456 WFT-CK-027
5 2.970000e+11 10987 5789 ww_13456 NL-WFT-12121
6 2.970000e+11 560989 4077 WW_13456 WFT-CK-027
7 2.970000e+11 560989 5789 ww_13456 NL-WFT-12121
8 2.970000e+11 34678 4077 WW_13456 WFT-CK-027
9 2.970000e+11 34678 5789 ww_13456 NL-WFT-12121
目前尚不清楚確切的問題可能是什么,但一個很好的猜測可能是浮點值存在差異。 浮點比較應該通過檢查接近性而不是相同性來完成,因為通常存在小數變化。
根據上下文,您可能需要使用更好的鍵數據類型,例如 int 或字符串,或檢查緊密度,例如通過執行[this answer][1]
執行的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.