我有一个数据帧,其中有无限值和-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的片段
我想在一种逻辑中尽可能将inf值替换为100,因为这是最大值,而-inf用1替换为最小值,并且应该不对该值进行硬编码 >
答案 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