Skip to main content
 首页 » 编程设计

python之我如何处理这种情况 : 'n/a' shows up as 'nan' in pandas dataframe, 但无法对其进行字符串匹配并替换

2025年05月04日35davidwang456

我有一个 CSV 文件,其中有几行是 n/a。当我将它作为 Pandas 数据框加载时,它显示为 nan。

当我在这几行中使用 split、lower 等函数时,这会导致问题。

data_df['column'][104] 
>>> nan 
 
data_df['column'][104].split() 
>>>  
AttributeError                            Traceback (most recent call last) 
<ipython-input-38-6efe06f0a4ec> in <module>() 
----> 1 data_df['column'][104].split() 
 
AttributeError: 'float' object has no attribute 'split' 
 
data_df['column'][104].lower() 
>>> 
AttributeError                            Traceback (most recent call last) 
<ipython-input-41-c80cc9ae0712> in <module>() 
----> 1 data_df['column'][104].lower() 
 
AttributeError: 'float' object has no attribute 'lower' 

当我尝试用 fillna 方法用空格替换 nan 时(这不会导致这些错误),它没有做任何事情:

data_df.fillna('') 
 
data_df['column'][104] 
>>> nan 

所以我尝试将其替换为字符串:

for i in range(len(data_df)): 
    if data_df['column'][i]=='nan': 
        data_df['column'][i]='' 
 
data_df['column'][104] 
>>> nan 
 
for i in range(len(data_df)): 
    if data_df['column'][i]=='n/a': 
        data_df['column'][i]='' 
 
data_df['column'][104] 
>>> nan 

以下不打印任何内容:

for i in range(len(data_df)): 
    if (data_df['column'][i]=='nan' or data_df['column'][i]=='n/a'): 
        print(data_df['column'][i]) 

为什么我无法捕获和替换 nan 或 n/a?我该如何解决?

请您参考如下方法:

我认为我们可以在一开始就修复它

df=pd.read_csv('Yourfile.csv',na_values=['n/a']).fillna('')