Python: «AttributeError: объект 'builtin_function_or_method' не имеет атрибута 'weekofyear'», почему я получаю это только в списках понимания? - PullRequest
0 голосов
/ 16 июня 2020

Я хочу выбрать все записи с той же неделей года с отсутствующими записями в pandas DataFrame:

Я могу без проблем найти неделю года для отсутствующих данных:

df_copy[df_copy['reference'].isna()].index.weekofyear

Вывод:

Int64Index([13, 13, 13, 13, 17, 18, 21, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,
            23, 28, 28, 30, 33, 39, 39, 39, 41, 41, 41, 41, 42, 42, 42, 43, 43,
            43, 43, 43, 44, 44, 44, 44, 44, 46, 46, 46, 46, 47, 48, 48, 48, 48,
            49, 49, 49, 49, 50, 50, 50, 50],
           dtype='int64', name='Timestamp')

Когда я помещаю то же выражение в список понимания, чтобы я мог попытаться найти все записи во фрейме данных с той же неделей лет отсутствия данные, которые он дает мне эту ошибку:

[x for x in df_copy if x.index.weekofyear in df_copy[df_copy['reference'].isna()].index.weekofyear]

Вывод:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-450-2d12edd41791> in <module>
----> 1 [x for x in df_copy if x.index.weekofyear in df_copy[df_copy['reference'].isna()].index.weekofyear]

<ipython-input-450-2d12edd41791> in <listcomp>(.0)
----> 1 [x for x in df_copy if x.index.weekofyear in df_copy[df_copy['reference'].isna()].index.weekofyear]

AttributeError: 'builtin_function_or_method' object has no attribute 'weekofyear'

EDIT ---------------------- ------- Теперь я вижу, что проблема не в выражении, а в понимании x.

[x for x in df_copy]

дает мне:

['reference', 'next_value']

Только строки имена столбцов.

1 Ответ

1 голос
/ 16 июня 2020

[x for x in df_copy] даст вам только имена столбцов. Я думаю, вы хотите l oop по строкам - используйте [x for x in df_copy.iterrows()]

Попробуйте это:

print([x.weekofyear for x, row in df_copy[df_copy['reference'].isna()].iterrows()])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...