![](/img/trans.png)
[英]Pandas - how to coerce only empty string values in dataframe column to NaN
[英]Is it legit having NaN for an empty string in Pandas Dataframe?
我正在從 S3 讀取一個 csv.gz 文件,該文件有一個帶有空值的字符串列。 一旦我使用 pandas.read_csv() 方法讀取該文件,
pandas.read_csv(io.BytesIO(csv_data['Body'].read()), sep='|',compression='gzip',
engine='python', error_bad_lines=False, warn_bad_lines=True,
encoding='iso-8859-1',
escapechar='\\',
quoting=1)
我在數據框中獲取 NaN 值而不是字符串列中的空/空白。有幾個問題?
i) NaN 是否適用於類型是對象的地方?
ii) 做 NaN 只適用於數字(整數、浮點數)而不適用於字符串
任何幫助,將不勝感激。 謝謝。 下面是我得到的輸入和實際輸出。
輸入:
"Obj_ID"|"Value"|"TimeStamp"\n
"ID-1"|"val"| "2020-03-12 00:00:00"
"ID-2"|"v"| "2020-03-12 00:00:00"
"ID-3"|"value-3"| "2020-03-12 00:00:00"
"ID-4"|"value-4"| "2020-03-12 00:00:00"
"ID-5"|""| "2020-03-12 00:00:00"
實際輸出:
Obj_ID Value TimeStamp
0 ID-1 val "2020-03-12 00:00:00"
1 ID-2 v "2020-03-12 00:00:00"
2 ID-3 value-3 "2020-03-12 00:00:00"
3 ID-4 value-4 "2020-03-12 00:00:00"
4 ID-5 NaN "2020-03-12 00:00:00"
無需操作 Dataframe 的所需輸出應為:
Obj_ID Value TimeStamp
0 ID-1 val "2020-03-12 00:00:00"
1 ID-2 v "2020-03-12 00:00:00"
2 ID-3 value-3 "2020-03-12 00:00:00"
3 ID-4 value-4 "2020-03-12 00:00:00"
4 ID-5 '' "2020-03-12 00:00:00"
來自read_csv
上的熊貓文檔:
na_values :標量、str、類列表或字典,可選
要識別為 NA/NaN 的其他字符串。 如果 dict 通過,特定的每列 NA 值。 默認情況下,以下值被解釋為 NaN:'', [...]
這解釋了為什么空字符串被解釋為NaN
。
keep_default_na : bool,默認為 True
解析數據時是否包含默認 NaN 值。 根據是否傳入 na_values ,行為如下: [...]
如果keep_default_na為 False,並且未指定na_values ,則不會將任何字符串解析為 NaN。
因此,只需將keep_default_na=False
作為參數添加到read_csv
就read_csv
您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.