首页 > 解决方案 > 在 pandas 中,如何选择 datetime64 格式的年份,同时选择空白行?

问题描述

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

标签: pythonpandasdatetimedatetime-format

解决方案


year通过将标量比较的 s 与检查NaTs链接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]

推荐阅读