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)
上面代码的输出是
如图所示,运行代码后,
nan
中仍然存在data
。有谁知道如何解决这个问题?谢谢!
如果 Nan 确实存在,似乎数据太多,看不到 'True' 值。 您可以使用 print(data.isnull().sum()) 检查有多少 Nan
由于
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
。
修改原对象: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 |