Tôi có một dataframe:Thay thế giá trị ngoại biên với cột quantile trong Pandas dataframe
df = pd.DataFrame(np.random.randint(0,100,size=(5, 2)), columns=list('AB'))
A B
0 92 65
1 61 97
2 17 39
3 70 47
4 56 6
Dưới đây là 5% quantiles:
down_quantiles = df.quantile(0.05)
A 24.8
B 12.6
Và đây là mặt nạ cho các giá trị thấp hơn quantiles:
outliers_low = (df < down_quantiles)
A B
0 False False
1 False False
2 True False
3 False False
4 False True
Tôi muốn đặt giá trị trong df
thấp hơn định lượng cho định lượng cột của nó . Tôi có thể làm như sau:
df[outliers_low] = np.nan
df.fillna(down_quantiles, inplace=True)
A B
0 92.0 65.0
1 61.0 97.0
2 24.8 39.0
3 70.0 47.0
4 56.0 12.6
Nhưng chắc chắn phải có cách thanh lịch hơn. Làm thế nào tôi có thể làm điều này mà không cần fillna
? Cảm ơn.
bạn có phiền một lớp lót: 'df [~ outliers_low] .fillna (down_quantiles, inplace = True)'? – EdChum
Tôi nghĩ rằng cần có nhiều con gấu trúc bản địa hơn để làm điều này. Và Nickil Maveli trả lời rõ ràng cho thấy nó. – shda
Có, tôi quên mất 'mặt nạ', tôi đã upvoted câu trả lời của Nickil cho phù hợp – EdChum