Нет изменений в исходном кадре данных после применения цикла - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть список данных, такой, что

df_lst = [df1, df2]

Я также создал функцию, которая удаляет строки с '0' в кадре данных:

def dropzeros(df):
    newdf = df[df['x']!=0.0]
    return newdf

Я пытался применить эточерез цикл и поместил переменную присваивания в цикле, но исходный кадр данных остался неизменным даже после запуска цикла.

for df in df_lst:
    df = dropzeros(df)

Я также пытался использовать списочные выражения для этого

df_lst = [dropzeros(df) for df in df_lst]

Я знаю, что функция работает с тех пор, как я применяю print (len (df)) до и после команды dropzeros(df) произошло падение в len, однако могу ли я знать, как я могу решить эту проблему, чтобы мой исходный кадр данных изменялся после выполнения цикла?

1 Ответ

0 голосов
/ 10 декабря 2018

Это потому, что переменная df в вашем цикле for не ссылается на значение в вашем списке.Вы создаете переменную df заново каждую итерацию вашего цикла.

Вы можете назначить через enumerate и pipe вашу функцию:

for idx, df in enumerate(df_lst):
    df_lst[idx] = df.pipe(dropzeros)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...