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

我有一个数据框,其中有 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 的片段

https://img1.sycdn.imooc.com/6572dcb900017bf201670501.jpg

我想将 inf 值替换为 100,因为这是最大值,将 -inf 替换为 1,因为如果在一个逻辑中可能,则将 -inf 替换为最小值,并且这些值不应被硬编码



慕码人2483693
浏览 50回答 2
2回答

幕布斯6054654

你就快到了:df['Col_A'].replace([-np.inf],min(df['Col_A'].replace(-np.inf,  np.nan)),inplace=True)

慕斯709654

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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python