Pandas any () возвращает false с истинными значениями - PullRequest
0 голосов
/ 10 октября 2018

У меня есть практически пустой фрейм данных плохо отформатированных дат, которые я конвертировал в формат DateTime.

from io import StringIO

data = StringIO("""issue_date,issue_date_dt
,
,
19600215.0,1960-02-15
,
,""")

df = pd.read_csv(data, parse_dates=[1])

, который выдает

    issue_date  issue_date_dt
0   NaN         NaT
1   NaN         NaT
2   19600215.0  1960-02-15
3   NaN         NaT
4   NaN         NaT

Я ожидаю, что смогу использовать df.any (), чтобы найти, было ли значение в строке или столбце.axis=0 ведет себя как ожидалось:

df.any(axis=0)

issue_date       True
issue_date_dt    True
dtype: bool

Но axis=1 просто возвращает false для всех строк все время.

df.any(axis=1)

0    False
1    False
2    False
3    False
4    False
dtype: bool

1 Ответ

0 голосов
/ 10 октября 2018

Я не совсем уверен , почему это происходит [1] , я думаю, что различные типы данных вдоль первой оси вызывают этот неожиданный результат, так как anyработает как ожидалось вдоль оси 0. Однако , я бы сказал, что обходной путь к этому на самом деле является лучшим подходом в любом случае, так как читателю будет более понятно, что именно вы проверяете.


Это можетпотенциально может быть ошибкой, если вы согласны, я бы порекомендовал открыть проблему на странице pandas github .

Обходной путь прост, используйте notnull для использования anyна однородной маске типа bool, а не на фрейме данных, содержащем смешанные типы

df.notnull().any(1)

0    False
1    False
2     True
3    False
4    False
dtype: bool

[1] Кажется, это было признано ошибкой

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