Почему pandas dataframe.query -> assign возвращает исходный размер набора данных? - PullRequest
0 голосов
/ 01 ноября 2018

Я искал ответ на этот вопрос в течение нескольких часов. Я использую Python 3.6.7 и Панды 0.23.4. Я пытаюсь получить подмножество строк из кадра данных, используя query (), а затем добавить дополнительные столбцы к этому подмножеству. Ниже приведен фрагмент кода:

df.query(f'({column}_c != {column}_c) & ({column}_t == {column}_t)')
                       .assign(reason='Calculated has value but target does not',
                               name=column,
                               calced=df[column + '_c'],
                               targeted=df[column + '_t'])

Исходный фрейм данных размером около 29K строк, когда я выполняю только часть запроса этой цепочки, я получаю 0 строк назад. Однако после assign () у меня снова есть 29K строк. Я думал, что query () сделал копию фрейма данных, поэтому я не ожидал такого поведения. У всех есть идеи, что происходит (я тоже попробовал подход df [] с теми же результатами)

1 Ответ

0 голосов
/ 01 ноября 2018

Похоже, ссылка 'df' в assign () является исходным кадром данных. Это приведет к построению строки для каждой строки в исходном кадре данных. Чтобы обойти это, нужно назначить отфильтрованный кадр данных временной переменной и использовать его для assign ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...