Python Pandas datetime64 [ns]比较

时间:2016-09-29 00:19:18

标签: python datetime pandas

我正在尝试使用索引来在2011-01-01之后的数据框中选择行。我使用以下代码行仅返回2011-01-01之后的部分数据帧

  df = df[df.Date > np.datetime64('2011-01-01 00:00:00')]

我没有收到错误。但是,我只在2011年看到2016年的日期。当我手动打开文件时,我可以看到有大量的条目从2011年开始。

我在这里做错了什么?有什么想法吗?

谢谢!

以下是数据:enter image description here

1 个答案:

答案 0 :(得分:1)

导入数据后,即使在过滤后,Date列的所有值仍然存在。只是您的数据太大而无法在控制台上完全显示(请查看pandas settings)。因此,其中一些(视觉上)被截断以适合页面。

使用的技巧将Date列转换为pandas datetime对象并从那里处理过滤:

import pandas as pd

df = pd.read_csv('Crimes_-_2001_to_present.csv', header = 0)
df.Date = pd.to_datetime(df.Date)

filterer = df.Date > pd.to_datetime('2011-01-01 00:00:00')
df = df[filterer]

现在,当您查看Date列中的第200行时,您应该得到一些内容:

df['Date'].iloc[200]
#Timestamp('2011-05-31 19:30:00')

Date栏的第2000行:

df['Date'].iloc[2000]
#Timestamp('2013-09-19 20:45:00')

从本质上讲,一切都在那里。您的控制台可能太小而无法适应所有情况。

我希望这会有所帮助。