簡體   English   中英

在 Pandas Dataframe 中為空字符串使用 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_csvread_csv您的需求。

暫無
暫無

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

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