SyntaxError: can't assign to function call в pandas

Я решаю вот такую задачу на Stepik: В dataframe с именем my_stat сохранены данные с 4 колонками: session_value, group, time, n_users.В переменной session_value замените все пропущенные значения на нули. В переменной n_users замените все отрицательные значения на медианное значение переменной n_users (без учета отрицательных значений, разумеется). Вот то что я написал (я новичок в pandas):

import pandas as pd    

my_stat['session_value'].query('session_value == None') = 0
my_stat['n_users'].query('n_users < 0') = my_stat['n_users'].mean()

Но при отправке ответа я получаю такую ошибку:

  File "jailed_code", line 23
    my_stat.query('session_value == None') = 0
    ^
SyntaxError: can't assign to function call

Как это исправить?


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

Автор решения: MaxU

Суть ошибки в том, что вы пытаетесь присвоить значение вызову функции.

Пример для воспроизведения ошибки:

lst = [1,2,3]
sum(lst) = 10
# SyntaxError: cannot assign to function call

Для заполнения NaN/None существуют специальные методы Series.fillna() и DataFrame.fillna():

In [206]: df
Out[206]:
   a  b    c
0  1  2  NaN
1  4  5  6.0
2  7  8  NaN

In [207]: df["c"] = df["c"].fillna(0)

In [208]: df
Out[208]:
   a  b    c
0  1  2  0.0
1  4  5  6.0
2  7  8  0.0
→ Ссылка