用中位数估算值的范围

时间:2019-05-14 10:19:31

标签: python pandas

我在数据框中有“ 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”列中也没有任何变化。

2 个答案:

答案 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()