我在数据框中有“ X”列。我想用中位数来估算负值和大于10的值。
下面是我的示例数据
index X
0 -3
1 5
2 7
3 6
4 0
5 8
6 6
7 -2
8 9
9 2465
下面是我尝试过的代码:
median = df.loc[(df['X']<10) & (df['X']>=0), 'X'].median()
df.loc[(df['X'] > 10) & (df['X']<0), 'X'] = np.nan
df['X'].fillna(median,inplace=True)
即使应用了上述代码,“ X”列中也没有任何变化。
答案 0 :(得分:3)
如果需要过滤值的中位数,请使用Series.where
:
mask = (df['X']<10) & (df['X']>=0)
df['X'] = df['X'].where(mask, df.loc[mask, 'X'].median())
print (df)
X
0 6
1 5
2 7
3 6
4 0
5 8
6 6
7 6
8 9
9 6
或所有值的median
:
mask = (df['X']<10) & (df['X']>=0)
df['X'] = df['X'].where(mask, df['X'].median())
答案 1 :(得分:0)
也许使用:
df.loc[(df['X'] > 0) & (df['X'] < 10), 'X'] = df['X'].median()