Python 如何删除;“无限”;数据帧中的值?
我尝试使用以下代码删除数据集中的所有无穷大和NaN值:Python 如何删除;“无限”;数据帧中的值?,python,pandas,numpy,nan,infinity,Python,Pandas,Numpy,Nan,Infinity,我尝试使用以下代码删除数据集中的所有无穷大和NaN值: #loading data data_path = os.path.join('/home/~/Desktop/~/~/rf_recordings', 'WiFi_1.iqt') nframes = 644571 iqdata = iqtools.GRData(data_path, fs = 5.12e+007, center=2.4415e+009) iqdata.read_complete_file() x_data = iq
#loading data
data_path = os.path.join('/home/~/Desktop/~/~/rf_recordings', 'WiFi_1.iqt')
nframes = 644571
iqdata = iqtools.GRData(data_path, fs = 5.12e+007, center=2.4415e+009)
iqdata.read_complete_file()
x_data = iqdata.get_spectrogram(nframes, lframes=1)
#trying to replace each inf and -inf into nan, then replace nan with mean value of x_data
df = pd.DataFrame(data = x_data)
df.replace([np.inf, -np.inf], np.nan)
df = np.nan_to_num(df, nan = np.mean(x_data[1]))
print(df)
但是我得到的结果显示,原来的nan被更改为np。平均值(x_数据[1])
,但是将inf
更改为nan
不起作用,如下所示:
以前
tensor([[[[0.0000e+00, 0.0000e+00, 0.0000e+00]]],
[[[0.0000e+00, 0.0000e+00, 0.0000e+00]]],
[[[0.0000e+00, 0.0000e+00, 0.0000e+00]]],
...,
[[[ nan, nan, inf]]],
[[[2.5295e-38, nan, nan]]],
[[[ nan, nan, nan]]]])
之后
有什么方法可以修改/改进吗?DataFrame.replace()
默认情况下不工作,它返回一个新的DataFrame
替代品
df.replace([np.inf, -np.inf], np.nan)
与以下任何一项:
df = df.replace([np.inf, -np.inf], np.nan)
或
有时建议使用前者,因为后者会修改对象的任何其他视图。谢谢您的回答,我尝试了您的两个建议,第一个建议不会更改数据集,当我使用第二个建议时,dataframe对象将成为非类型对象,无法再更改为numpy数组。有什么想法吗?
df = df.replace([np.inf, -np.inf], np.nan)
df.replace([np.inf, -np.inf], np.nan, inplace=True)