Проблема с заменой значения

a = my_stat.query('n_users > 0')['n_users'].median()

my_stat = my_stat.loc[(my_stat['n_users'] < 0, 'n_users')] = a

my_stat = my_stat.fillna(0)

Cам DataFrame:

session_value,time,group,n_users
0.0,12,B,9
,11,A,-1
1.0,8,A,1
2.0,9,B,3
2.0,10,B,9
3.0,8,A,8
,11,B,5
0.0,9,A,4
0.0,8,B,-11
0.0,9,A,-20

В переменной session_value замените все пропущенные значения на нули.

В переменной n_users замените все отрицательные значения на медианное значение переменной n_users (без учета отрицательных значений, разумеется).


Ответы (1 шт):

Автор решения: MaxU
# В переменной session_value замените все пропущенные значения на нули.
df["session_value"] = df["session_value"].fillna(0)

# В переменной n_users замените все отрицательные значения
# на медианное значение переменной n_users

# маска для нахождения отрицательных значений в ["n_users"]
neg_usr_mask = df["n_users"].lt(0)

df.loc[neg_usr_mask, "n_users"] = df.loc[~neg_usr_mask, "n_users"].median()

результат:

In [58]: df
Out[58]: 
   session_value  time group  n_users
0            0.0    12     B      9.0
1            0.0    11     A      5.0
2            1.0     8     A      1.0
3            2.0     9     B      3.0
4            2.0    10     B      9.0
5            3.0     8     A      8.0
6            0.0    11     B      5.0
7            0.0     9     A      4.0
8            0.0     8     B      5.0
9            0.0     9     A      5.0
→ Ссылка