我有一个数据框,其中有 infinte 和 -infinite 值,我想将其替换为数据框的最大值和最小值,我可以将 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,因为如果在一个逻辑中可能,则将 -inf 替换为最小值,并且这些值不应被硬编码
2 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
你就快到了:
df['Col_A'].replace([-np.inf],min(df['Col_A'].replace(-np.inf, np.nan)),inplace=True)
慕斯709654
TA贡献1840条经验 获得超5个赞
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
添加回答
举报
0/150
提交
取消