df.replace() 无法替换数据框中的 nan 字符串

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

data
从txt文件中读取信息,其中包含一些nan值。我尝试使用
data.replace('nan', 0)
将所有 nan 替换为零。但找不到该系列中的 nan 值。

file = 'RAO.txt'
data = pd.read_csv(file, sep="\t", header=None, skiprows=1)
data = data.drop(data.columns[-1], axis=1)
print(data)
print(type(data.iloc[0, 2]))
data.replace('nan', 0, inplace=True)
print(data)

上面代码的输出是

enter image description here

如图所示,运行代码后,

nan
中仍然存在
data
。有谁知道如何解决这个问题?谢谢!

python pandas dataframe
3个回答
0
投票

如果 Nan 确实存在,似乎数据太多,看不到 'True' 值。 您可以使用 print(data.isnull().sum()) 检查有多少 Nan


0
投票

由于

isnull()
不会将单元格识别为
NaN
,因此您看到的
nan
可能实际上是字符串
'nan'

请输入

print(type(data.iloc[0, 2]))
print(data.iloc[0, 2])
进行测试。

  • 如果是字符串类型,可以替换为
    df.replace('nan', 0, inplace=True)
  • 如果是数字类型,可以用
    df.fillna(0, inplace=True)
    代替。

确保使用

inplace=True
,以便直接对原始内容进行更改
DataFrame


0
投票

修改原对象:inplace:

默认情况下,fillna()、ffill() 和 bfill() 返回一个新对象,而不修改原始对象。将 inplace 参数设置为 True 会修改原始对象。

df.fillna(0, inplace=True)

nan
字符串替换为值:

df.replace('nan', 0, inplace=True)

完整示例:

import pandas as pd
import numpy as np

df = pd.DataFrame({'colA':[0.6, "nan", "0.04+0.0j", np.nan],
                   'colB':[np.nan, "0.04+0.0j", 6, "nan"]})

df.fillna(0, inplace=True)
df.replace('nan', 0, inplace=True)

原始数据框:

colA colB
0.6
0.04+0.0j
0.04+0.0j 6

fillna
replace
之后的数据框:

colA colB
0.6 0
0 0.04+0.0j
0.04+0.0j 6
0 0
© www.soinside.com 2019 - 2024. All rights reserved.