我正在尝试编写一个函数来评估pandas DataFrame中的列是否只有日期或日期时间,以便决定是否在外部数据库中创建日期或时间戳列。
DataFrame中的所有日期都存储为相同的类型,但仅限日期的值将没有时间组件
有没有一种有效的方法呢?我不想循环遍历python代码中的每一列
答案 0 :(得分:1)
我要检查datetime
列是否等于其date
组件
考虑数据框df
df = pd.DataFrame(dict(
Date=pd.to_datetime(
['2017-03-01',
'2017-03-01 00:00:00',
'2017-03-01 00:00:01',
'2017-03-01 10:30:00'])))
df
Date
0 2017-03-01 00:00:00
1 2017-03-01 00:00:00
2 2017-03-01 00:00:01
3 2017-03-01 10:30:00
我们可以看到前两行不需要时间组件,但最后两行不需要时间组件。我们可以用
查看df.Date == pd.to_datetime(df.Date.dt.date)
0 True
1 True
2 False
3 False
Name: Date, dtype: bool
因此我们可以检查整个列是否需要时间组件
(d1.Date == pd.to_datetime(d1.Date.dt.date)).all()
False
在这种情况下,False
表示我们应该使用datetime