簡體   English   中英

大熊貓加入給出NaN值

[英]pandas join gives NaN values

我想加入2個DataFrames

郵政編碼數據庫 (前10個條目)

    0   zip_code           City       State       County  Population
0   0      90001    Los Angeles  California  Los Angeles       54481
1   1      90002    Los Angeles  California  Los Angeles       44584
2   2      90003    Los Angeles  California  Los Angeles       58187
3   3      90004    Los Angeles  California  Los Angeles       67850
4   4      90005    Los Angeles  California  Los Angeles       43014
5   5      90006    Los Angeles  California  Los Angeles       62765
6   6      90007    Los Angeles  California  Los Angeles       45021
7   7      90008    Los Angeles  California  Los Angeles       30840
8   8      90009    Los Angeles  California  Los Angeles           -
9   9      90010    Los Angeles  California  Los Angeles        1943

數據 (前10個條目)

    buyer                               zip_code
0   SWEENEY,THOMAS R & MICHELLE H       NaN
1   DOUGHERTY,HERBERT III & JENNIFER M  NaN
2   WEST COAST RLTY SVCS INC            NaN
3   LOVE,JULIE M                        NaN
4   SAHAR,DAVID NaN
5   SILBERSTERN,BRADLEY E TRUST         91199
6   LEE,SUSAN & JIMMY C                 92025
7   FRAZZANO REAL ESTATE I NC           NaN
8   RUV INVESTMENTS LLC                 91730
9   KAOS KAPITAL LLC                    NaN

因此,最終表應具有[買方,郵政編碼,城市,縣]。 我加入有關郵政編碼的問題。

data_2 = data.join(zipcode_database[['City', 'County', 'zip_code']].set_index('zip_code'), on='zip_code')

但是,即使對於實際存在郵政編碼的數據中的元組, 城市列也是NaN

    buyer   zip_code    City    County
10  LANDON AVE TRUST 37736  NaN NaN NaN
11  UMAR,AHMAD  NaN NaN NaN
12  3 JPS INC   90717   NaN NaN
13  T & L HOLDINGS INC  95610   NaN NaN
14  CAHP HOLDINGS LLC   90808   NaN NaN
15  REBUILDING TOGETHER LONG BEACH  92344   NaN NaN
16  COLFIN AI-CA 4 LLC  NaN NaN NaN
17  GUTIERREZ,HUGO  91381   NaN NaN
18  VALBRIDGE CAP GOLDEN GATE FUND  NaN NaN NaN
19  SOLARES,OSCAR   92570   NaN NaN

為什么會這樣呢? 郵政編碼數據庫包含從90001-999950的所有郵政編碼。

我首先想到的是“ zip_code”的數據類型在兩個方面是不同的:

print(zipcode_database['zip_code'].dtype)
print(data['zip_code'].dtype)

輸出:

int64
object

考慮使用astype進行類型轉換,但這不適用於NaN值。 有什么想法嗎?

您可以將NaNNaN為浮點類型,但不能強制轉換為int。 在您的情況下,我會將兩個DataFrame中的zip_code字段都強制轉換為float,然后加入。

zipcode_database.zip_code = zipcode_database.zip_code.astype(float)
data.zip_code = data.zip_code.astype(float)
data_2 = data.join(zipcode_database[['City', 'County', 'zip_code']].set_index('zip_code'), on='zip_code')

我無法從您的示例數據中復制任何有意義的信息(沒有匹配的郵政編碼),但這應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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