我正在尝试使用索引来在2011-01-01之后的数据框中选择行。我使用以下代码行仅返回2011-01-01之后的部分数据帧
df = df[df.Date > np.datetime64('2011-01-01 00:00:00')]
我没有收到错误。但是,我只在2011年看到2016年的日期。当我手动打开文件时,我可以看到有大量的条目从2011年开始。
我在这里做错了什么?有什么想法吗?
谢谢!
答案 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')
从本质上讲,一切都在那里。您的控制台可能太小而无法适应所有情况。
我希望这会有所帮助。