如何遍历熊猫time_stamp列?

时间:2018-11-30 15:14:25

标签: python pandas numpy datetime

我有一个DataFrame,其中包含我使用pd.to_datetime函数创建的time_stamp列。

date_start             | column2 |  column3  | column...
2018-09-22 12:30:00          x         x        x

当我尝试遍历此列时,我无法匹配时间戳。

例如,当我尝试却一无所获时:

for i in df['date_start']: 
    if i == user_entry: 
        print('something')

即使用户输入中确实有匹配的值,我也永远不会得到正确的输出。

有谁可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

目前尚不清楚user_entry代表什么,但我相当确定这是类似的东西……请看以下内容:

创建具有日期时间性质的系列:

>>> import pandas as pd
>>> s = pd.Series(['01/01/2018', '01/02/2018', '12/25/2018'])
>>> s = pd.to_datetime(s)
>>> s
0   2018-01-01
1   2018-01-02
2   2018-12-25
dtype: datetime64[ns]

使用input获取用户条目:

>>> user_entry = input()
01/02/2018
>>> type(user_entry)
<class 'str'>

现在,将user_entry转换为日期时间对象:

>>> import datetime
>>> user_entry = datetime.datetime.strptime(user_entry, '%m/%d/%Y')
>>> user_entry
datetime.datetime(2018, 1, 2, 0, 0)

继续进行迭代:

>>> for dt in s:
...     if dt == user_entry:
...             print('Match')
... 
Match

答案 1 :(得分:0)

您可以使用熊猫矢量化方法。无需从标准库中引入datetime模块,因为pd.to_datetime可用于标量和多种人类可读格式:

import pandas as pd

s = pd.Series(['01/01/2018 12:30:00', '01/02/2018 15:20:12', '12/25/2018 10:45:15'])
s = pd.to_datetime(s)

user_entry = input()  # input '2018-01-01 12:30:00'

if (s == pd.to_datetime(user_entry)).any():
    print('Match found!')

# 2018-01-01 12:30:00
# Match found!