![](/img/trans.png)
[英]Pandas DataFrame.to_csv last column missing when field is empty
[英]Missing values in Pandas DataFrame are always empty when written to CSV
在這個例子中,我使用的是1.0.1
版的 Pandas。
我有一個混合類型和一些缺失值的 DataFrame:
df = pd.DataFrame(
[
[1, 2.0, '2020-01-01', 'A String']
], columns = ['int', 'float', 'datetime', 'str']
)
df.loc[1] = [pd.NA, pd.NA, pd.NA, pd.NA]
df.datetime = pd.to_datetime(df.datetime)
print(df)
int float datetime str 0 1 2.0 2020-01-01 A String 1 <NA> NaN NaT NaN
讓我們打印 DataFrame 的類型以確保它們符合我的預期:
print(df.dtypes)
int object float float64 datetime datetime64[ns] str object dtype: object
現在,我想將此 DataFrame 寫入 CSV 文件:
df.to_csv('test.csv', index=False)
查看輸出 CSV,所有 NaN 值都替換為空字符串。 我想這對於字符串列來說很好,但對於int
、 float
或datetime
列來說並不是最佳選擇。
如何獲得缺失值的列特定表示?
編輯:確實可以使用na_rep
參數自動填充缺失值: df.to_csv('test.csv', na_rep='NA')
。 但是,它不允許特定於列的表示。
解決方案:我想到目前為止最好的解決方案是在寫入 CSV 之前使用 dict 調用fillna
:
df.fillna(
{'int': '<NA>', 'float': 'NaN', 'datetime': 'NaT'}
).to_csv('test.csv', index=False)
嘗試這個:
df.to_csv('test.csv', index=False,na_rep='NA')
沒有指定值應該是什么的特定 CSV 格式。 有幾個約定,但最終取決於之后將使用 csv 的程序。
因此,在導出之前,您應該使用 Pandas fillna函數為每種數據類型提供所需的內容。
您可以對特定列使用 fillna() 以獲得您想要的值。例如
df['int column'].fillna(0)
df['string column'].fillna("NA")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.