Pandas查找日期

时间:2017-06-20 07:52:50

标签: python date pandas dataframe

我有一个pandas DataFrame,其中我有包含日期​​的列。

我需要确保这些列中只包含日期。有没有人对如何做到这一点有任何建议? 我想过只是简单地找到哪些行包含除日期之外的类型的数据 - 尽管我不知道如何对此进行编码。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

如果数据不包含NaNNone s值,则需要检查所有字符串值是否可以转换为datetime使用applyto_datetime并且参数errors='coerce'如果无法解析某个值,则返回NaT。然后添加notnull all作为掩码,并选择loc

df = pd.DataFrame({'a':['2015-02-04','2015-02-05','2015-02-06'],
                   'b':['2015-02-06','2015-02-06', 'u'], 
                   'c':['2015-01-01','d','2015-02-06']})
print (df)
            a           b           c
0  2015-02-04  2015-02-06  2015-01-01
1  2015-02-05  2015-02-06           d
2  2015-02-06           u  2015-02-06

cols = ['a','b','c']
mask = df[cols].apply(pd.to_datetime, errors='coerce').notnull().all()
print (mask)
a     True
b    False
c    False
dtype: bool

print (df.loc[:, mask])
            a
0  2015-02-04
1  2015-02-05
2  2015-02-06

或者,如果需要检查某些列是否已dtype datetime使用DataFrame.select_dtypes

df['a'] = pd.to_datetime(df['a'])
print (df)
           a           b           c
0 2015-02-04  2015-02-06  2015-01-01
1 2015-02-05  2015-02-06           d
2 2015-02-06           u  2015-02-06

print (df.dtypes)
a    datetime64[ns]
b            object
c            object
dtype: object

print (df.select_dtypes(include=['datetime']))
           a
0 2015-02-04
1 2015-02-05
2 2015-02-06