В пандах, как я могу выбрать годы в формате datetime64 и в то же время пустые строки? - PullRequest
0 голосов
/ 04 июля 2018

В питоне 3 и пандах у меня есть этот фрейм данных:

df_comissoes.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 104 entries, 0 to 103
Data columns (total 4 columns):
DataFimComissao    65 non-null datetime64[ns]
IdComissao         104 non-null object
NomeComissao       104 non-null object
SiglaComissao      97 non-null object
dtypes: datetime64[ns](1), object(3)
memory usage: 3.3+ KB

В столбце «DataFimComissao» есть строки с датами или пробел (NaT):

    index   DataFimComissao     IdComissao  NomeComissao    SiglaComissao
0   0   2008-06-26 03:00:00     11072   CPI da Guerra Fiscal    CPIGF
1   1   2008-06-25 03:00:00     11073   CPI da Queima da Palha da Cana-de-açúcar    CPIQPCA
2   2   2009-04-15 03:00:00     11199   CPI da Santa Casa   CPISC
3   3   NaT                     12769   Comissão Especial de Reforma da Lei Orgânica d...   CERLOM
4   4   NaT                     12770   Comissão do Serviço Público Civil   CSPC
5   5   2010-02-03 02:00:00     12216   CPI do Erro Médico  CPIEM
6   6   2010-10-25 02:00:00     12221   CPI BANCOOP     CPIBANCOOP
7   7   2010-10-06 03:00:00     12222   CPI IPVA    CPIIPVA
8   8   2010-10-25 02:00:00     12223   CPI Pedofilia   CPIPEDOF
9   9   NaT                     12444   Comissão de Constituição, Justiça e Redação     CCJR

Мне нужно выбрать только строки с датами «DataFimComissao», год которых равен или превышает 2015 год, или иметь «NaT»

Пожалуйста, как я могу выбрать годы в формате datetime64 [нс] и одновременно в пустых строках?

1 Ответ

0 голосов
/ 04 июля 2018

Создать булеву маску с помощью цепочки year с по скалярному сравнению с проверкой NaT с по isna, последний фильтр по boolean indexing :

mask = (df_comissoes['DataFimComissao'].dt.year >= 2015) | 
       (df_comissoes['DataFimComissao'].isna())
#oldier pandas versions
#mask = (df_comissoes['DataFimComissao'].dt.year >= 2015) | 
#       (df_comissoes['DataFimComissao'].isnull())

df = df_comissoes[mask]
...