在熊猫中,如何选择datetime64格式的年份,同时选择空白行?

时间:2018-07-04 10:53:19

标签: python pandas datetime datetime-format

在python 3和pandas中,我具有以下数据框:

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 [ns]格式的年份,同时选择空白行?

1 个答案:

答案 0 :(得分:1)

通过链接按标量比较的year s与按isna的校验NaT s,按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]