用Pandas管理"NAN"(大写字母)的方法?
Method to manage "NAN" (in capital letters) with Pandas?
您知道是否有办法管理 Pandas 数据文件中所有大写字母的“NAN”吗?
我有一些数据文件具有这种格式:
"2020-08-14 14:00:00",10,154.9554,153.6879,154.3988,158.5282,"NAN","NAN",158.43,"NAN",155.2103
.isnull()
和 .isna()
函数在“NAN”大写时不处理,但在这样写“NaN”或“nan”时处理。
提前谢谢你,我寻找了其他主题,但没有找到关于这个特定主题的内容。
isnull
和 isna
做 NOT return 无论大小写对字符串都是正确的。
您很可能混合使用了真实的 NaN 和字符串:
s = pd.Series([float('nan'), 'NAN', 'nan', 'NaN'])
df = pd.concat({'s': s, 'isnull': s.isnull(), 'isna': s.isna()}, axis=1)
输出:
s isnull isna
0 NaN True True
1 NAN False False
2 nan False False
3 NaN False False
现在,默认情况下,read_csv
将以下字符串识别为 NaN:
'', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN',
'-NaN', '-nan', '1.#IND', '1.#QNAN', '<NA>', 'N/A',
'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null'
您可以使用 na_values
选项添加 "NAN"
:
df = pd.read_csv(..., na_values=['NAN'])
您可以简单地使用 .replace
如下
import pandas as pd
df = pd.DataFrame({"x":[1.5,2.5,"NAN",3.5,4.5,"NAN",6.5,7.5]})
print(df.x.mean()) # TypeError: unsupported operand type(s) for +: 'float' and 'str'
df.replace("NAN",float("nan"),inplace=True)
print(df.x.mean()) # 4.333333333333333
或者如果您希望将新的 pandas.DataFrame
和 NAN-string 替换为“真正的”NaN
df2 = df.replace("NAN",float("nan"))
尝试.replace()
分配nan
值,然后你就可以正确使用它们nan
:
df["column"].replace({"NAN": np.nan})
您知道是否有办法管理 Pandas 数据文件中所有大写字母的“NAN”吗?
我有一些数据文件具有这种格式:
"2020-08-14 14:00:00",10,154.9554,153.6879,154.3988,158.5282,"NAN","NAN",158.43,"NAN",155.2103
.isnull()
和 .isna()
函数在“NAN”大写时不处理,但在这样写“NaN”或“nan”时处理。
提前谢谢你,我寻找了其他主题,但没有找到关于这个特定主题的内容。
isnull
和 isna
做 NOT return 无论大小写对字符串都是正确的。
您很可能混合使用了真实的 NaN 和字符串:
s = pd.Series([float('nan'), 'NAN', 'nan', 'NaN'])
df = pd.concat({'s': s, 'isnull': s.isnull(), 'isna': s.isna()}, axis=1)
输出:
s isnull isna
0 NaN True True
1 NAN False False
2 nan False False
3 NaN False False
现在,默认情况下,read_csv
将以下字符串识别为 NaN:
'', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN',
'-NaN', '-nan', '1.#IND', '1.#QNAN', '<NA>', 'N/A',
'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null'
您可以使用 na_values
选项添加 "NAN"
:
df = pd.read_csv(..., na_values=['NAN'])
您可以简单地使用 .replace
如下
import pandas as pd
df = pd.DataFrame({"x":[1.5,2.5,"NAN",3.5,4.5,"NAN",6.5,7.5]})
print(df.x.mean()) # TypeError: unsupported operand type(s) for +: 'float' and 'str'
df.replace("NAN",float("nan"),inplace=True)
print(df.x.mean()) # 4.333333333333333
或者如果您希望将新的 pandas.DataFrame
和 NAN-string 替换为“真正的”NaN
df2 = df.replace("NAN",float("nan"))
尝试.replace()
分配nan
值,然后你就可以正确使用它们nan
:
df["column"].replace({"NAN": np.nan})