如何在 pandas 中将 NaN 转换为 'N/A'?

问题描述 投票:0回答:2

如何在 Pandas 中将 NaN 转换为 N/A?

如有任何想法和建议,我们将不胜感激!

python pandas missing-data
2个回答
4
投票

您应该澄清为什么要将 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”不是空条目


0
投票

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")

为了获得更漂亮的结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.