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