簡體   English   中英

Python DataFrame字符串意外替換返回NaN

[英]Python DataFrame String replace accidently Returing NaN

我在 Python Pandas 中遇到了一個奇怪的問題,當我讀取一個 excel 並替換一個字符“k”時,結果給了我沒有“K”的行的 NaN。 見下圖

在此處輸入圖像描述

它應該在第 4 行返回 173,而不是 NaN,但是如果我創建一個全新的 excel,並鍵入相同的數字。 它會起作用的。

或者如果我使用此代碼,

df = pd.DataFrame({ 'sales':['75.8K','6.9K','7K','6.9K','173','148']})
df

在此處輸入圖像描述

那么它將運作良好。 為什么? 請指教!

這是因為 excel 導入中的173148值是數字,而不是字符串。 由於str.replace返回一個非數字值,因此這些值變為NaN 您可以通過在這些位置設置帶有數字的數據框來證明這一點:

df = pd.DataFrame({ 'sales':['75.8K','6.9K','7K','6.9K',173,148]})
df.dtypes
# sales    object
# dtype: object
df['num'] = df['sales'].str.replace('K','')

輸出:

   sales   num
0  75.8K  75.8
1   6.9K   6.9
2     7K     7
3   6.9K   6.9
4    173   NaN
5    148   NaN

如果您不介意所有值都是字符串,則可以使用

df = pd.read_excel('manual_import.xlsx', dtype=str)

或者

df = pd.read_excel('manual_import.xlsx', converters={'sales':str})

應該只是將所有sales值轉換為字符串。

嘗試這個:

df['nums'] = df['sales'].astype(str)
df['nums'] = pd.to_numeric(df['nums'].str.replace('K', ''))

暫無
暫無

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

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