簡體   English   中英

對於 dtype float64 的列,合並沒有按預期工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM