Pandas 'NA' 字符串的 fillna 异常
Pandas fillna exception for 'NA' string
sample_file.txt
6|test|3|4
5|test||8
9|test|NA|12
脚本
import pandas as pd
df = pd.read_csv('sample_file.txt', dtype='str', sep='|', names=['upc_cd', 'chr_typ', 'chr_vl','chr_vl_typ'])
df["chr_vl"].fillna("NOT AVLBL", inplace = True)
print(df)
当前输出
upc_cd chr_typ chr_vl chr_vl_typ
0 6 test 3 4
1 5 test NOT AVLBL 8
2 9 test NOT AVLBL 12
需要输出
upc_cd chr_typ chr_vl chr_vl_typ
0 6 test 3 4
1 5 test NOT AVLBL 8
2 9 test NA 12
基本上我需要 NA 因为它在输出中同时它应该用特定文本替换空值 'NOT AVLBL'
也尝试了替换方法,但无法获得所需的输出
Pandas read_csv 函数已经定义了一组字符串,当您加载 csv 文件时,这些字符串将被解释为 NaN。在这里,您可以选择用其他字符串扩展该列表,也可以完全覆盖它。在您的情况下,您必须覆盖它,因为 NA 是 pandas 使用的默认值之一。为此,
你可以试试
df = pd.read_csv('sample_file.txt', dtype='str', sep='|',
names=['upc_cd', 'chr_typ', 'chr_vl','chr_vl_typ'],
na_values=[''], keep_default_na=False)
...
这只会将空字符串解释为 NA,因为我们已将 keep_default_na
设置为 False
,并且仅将 ''
作为带有 na_values
参数的 NA 值。
如果您想了解更多信息,请查看 pandas docs.
sample_file.txt
6|test|3|4
5|test||8
9|test|NA|12
脚本
import pandas as pd
df = pd.read_csv('sample_file.txt', dtype='str', sep='|', names=['upc_cd', 'chr_typ', 'chr_vl','chr_vl_typ'])
df["chr_vl"].fillna("NOT AVLBL", inplace = True)
print(df)
当前输出
upc_cd chr_typ chr_vl chr_vl_typ
0 6 test 3 4
1 5 test NOT AVLBL 8
2 9 test NOT AVLBL 12
需要输出
upc_cd chr_typ chr_vl chr_vl_typ
0 6 test 3 4
1 5 test NOT AVLBL 8
2 9 test NA 12
基本上我需要 NA 因为它在输出中同时它应该用特定文本替换空值 'NOT AVLBL' 也尝试了替换方法,但无法获得所需的输出
Pandas read_csv 函数已经定义了一组字符串,当您加载 csv 文件时,这些字符串将被解释为 NaN。在这里,您可以选择用其他字符串扩展该列表,也可以完全覆盖它。在您的情况下,您必须覆盖它,因为 NA 是 pandas 使用的默认值之一。为此, 你可以试试
df = pd.read_csv('sample_file.txt', dtype='str', sep='|',
names=['upc_cd', 'chr_typ', 'chr_vl','chr_vl_typ'],
na_values=[''], keep_default_na=False)
...
这只会将空字符串解释为 NA,因为我们已将 keep_default_na
设置为 False
,并且仅将 ''
作为带有 na_values
参数的 NA 值。
如果您想了解更多信息,请查看 pandas docs.