如何在 Pandas 中将 NaN 转换为 N/A?
如有任何想法和建议,我们将不胜感激!
您应该澄清为什么要将 NaN 转换为 'N/A'。 NaN 是缺失数据的特殊内部表示。当然“N/A”代表缺失数据,但对于 python 来说,这只是另一个字符串,并且与 None/null/missing 值明显不同。
未经澄清,我假设您在编写 CSV、XL 等时希望将 NaN 值导出为“N/A”……;为此,您可以使用 na_rep 参数
df.to_csv('path/to/my.csv', na_rep='N/A')
这将使导出文件中的 NaN 值写为“N/A”。
pandas 还有一个 fillna 函数,但请注意,这会将丢失的数据转换为字符串,例如,
df.fillna('N/A')
现在不会有任何丢失的数据,并且 pd.isna() 将不起作用,因为字符串“N/A”不是空条目
pandas 中有一个特定的内置值表示 N/A:
pd.NA
。 这与 NaN
或 None
的处理方式不同。 在大多数情况下,您可以在输出期间使用 na_rep="N/A"
请求特殊表示:
import numpy as np
import pandas as pd
# example dataframe
df = pd.DataFrame({"a": [1.0, 2.0, np.nan], "b": [np.nan, 3.0, 4.0]})
print(df)
给予:
a b
0 1.0 NaN
1 2.0 3.0
2 NaN 4.0
现在用
NaN
替换 NA
值:
# replace NaNs with NA
df.replace(np.nan, pd.NA, inplace=True)
print(df)
给予:
a b
0 1.0 <NA>
1 2.0 3.0
2 <NA> 4.0
输出到文本或 csv 时,您可以使用任何字符串表示形式格式化它们:
df.to_csv('path/to/my.csv', na_rep='N/A')
或者作为 HTML 格式的表格:
df.style.format(na_rep="N/A")
为了获得更漂亮的结果: