将-infinty值和无穷大值替换为数据帧的最大值和最小值

时间:2020-10-21 22:54:27

标签: python pandas numpy

我有一个数据帧,其中有无限值和-infinite值,我想用数据帧的max和min值替换它,我可以将infinte值替换为max,但不能这样做 -infite值

import pandas as pd 
import numpy as np  
a = float('Inf')
b = float('-Inf')
v = [1,2,5,a,b,10,5,a,5,100,2,b,b]  
df = pd.DataFrame({'Col_A': v})

将无限值替换为最大值

df['Col_A'].replace([np.inf],max(df['Col_A'].replace(np.inf, 
np.nan)),inplace=True)

df的片段

enter image description here

我想在一种逻辑中尽可能将inf值替换为100,因为这是最大值,而-inf用1替换为最小值,并且应该不对该值进行硬编码

2 个答案:

答案 0 :(得分:1)

您快到了:

df['Col_A'].replace([-np.inf],min(df['Col_A'].replace(-np.inf, 
np.nan)),inplace=True)

答案 1 :(得分:0)

Min / Max可以将inf值返回为min / max,因此您可以过滤掉然后替换:

v1 = df.loc[~df['Col_A'].isin([np.inf,-np.inf]),'Col_A'].max()
v2 = df.loc[~df['Col_A'].isin([np.inf,-np.inf]),'Col_A'].min()
df['Col_A'] = df['Col_A'].replace([np.inf,-np.inf], [v1,v2])
df