获取日期时间格式的列,并检查其中是否包含值



基本上,我有一个pandas数据帧,其中一列是日期字符串。我想把每个值转换成日期时间,这样我以后就可以在那里寻找一个特定的值,比如:

df = pd.DataFrame({'DATESTAMP': ['01/01/2017','02/01/2017','03/01/2017']})
df['DATESTAMP2']=pd.to_datetime(df['DATESTAMP'])
date = datetime.strptime('02/01/2017', '%d/%m/%Y')
date in df['DATESTAMP2']
False

正如你所看到的,它没有检测到日期。我检查了原因,发现新的DATESTAMP2列的格式是

df['DATESTAMP2']
Out[296]: 
0   2017-01-01
1   2017-01-02
2   2017-01-03
Name: DATESTAMP2, dtype: datetime64[ns]
df['DATESTAMP2'][2]
Out[279]: Timestamp('2017-01-03 00:00:00')

这不是日期时间,而是时间戳,这是有道理的,因为它无法将其与date变量进行比较。

有没有办法解决这个问题,也就是说实际上将列转换为日期时间而不是时间戳?

两个问题:

  1. 您的日期有两种不同的格式(mm/dd/yyyy和dd/mm/yyyy(
  2. in操作员没有按您的期望进行操作。它关注的是索引而不是值。通常你只使用.values,但对于通常不起作用的日期,你需要使用to_list()

这是上下文中的两个变化。注意在to_datetime()中添加格式以处理1(和to_list()以处理2(

import pandas as pd
from datetime import datetime
df = pd.DataFrame({'DATESTAMP': ['01/01/2017','02/01/2017','03/01/2017']})
df['DATESTAMP2']=pd.to_datetime(df['DATESTAMP'], format='%d/%m/%Y')
date = datetime.strptime('02/01/2017', '%d/%m/%Y')
print(date in df['DATESTAMP2'].to_list())

时间戳与日期时间的关系不是问题。来自时间戳文档:

Timestamp是panda的等价物,相当于python的Datetime在大多数情况下可以与之互换。

相关内容

  • 没有找到相关文章

最新更新