我的日期是String。在对它进行to_datetime之后,它还有时间吗?
pickedDate = '2016-09-23'
pickedDate = pandas.to_datetime(pickedDate,format='%Y-%m-%d')
print(pickedDate)
控制台日志:2016-09-23 00:00:00
我想要的是:我有Dataframe,日期为索引。我想搜索与pickedDate
相同的所有条目。
我试过了:
print(dataframe.loc[pickedDate])
但是这给了我:
KeyError:'标签[2016-09-23 00:00:00]不在[index]'
数据框看起来像(头):
DATE INT VALL
2005-11-10 00:00:00.000 0
2005-11-10 00:30:00.000 0
2005-11-10 01:00:00.000 0
2005-11-10 01:30:00.000 1
2005-11-10 02:00:00.000 1
答案 0 :(得分:0)
您的问题是您的DataFrame索引包含字符串。所以你可以用字符串搜索它:
import socket
或者您可以更改索引dtype:
dataframe.loc[str(pickedDate.date())]
答案 1 :(得分:0)
考虑到索引的格式(YYYY-MM-DD
),这将起作用:
df.index
DatetimeIndex(['2005-11-10', '2005-11-10', '2005-11-10', '2005-11-10',
'2005-11-10'],
dtype='datetime64[ns]', name='DATE', freq=None)
df.loc['2005-11-10']
INT VALL
DATE
2005-11-10 00:00:00.000 0
2005-11-10 00:30:00.000 0
2005-11-10 01:00:00.000 0
2005-11-10 01:30:00.000 1
2005-11-10 02:00:00.000 1
Pandas在访问日期时间索引时非常聪明,可以使用字符串。所以,在你的情况下,你做了:
pickedDate = '2016-09-23'
df.loc[pickedDate]
如果您的索引是字符串列表,那么也会工作:
df.index
Index(['2005-11-10', '2005-11-10', '2005-11-10', '2005-11-10', '2005-11-10'], dtype='object', name='DATE')
Idf.loc['2005-11-10']
INT VALL
DATE
2005-11-10 00:00:00.000 0
2005-11-10 00:30:00.000 0
2005-11-10 01:00:00.000 0
2005-11-10 01:30:00.000 1
2005-11-10 02:00:00.000 1
但是,如果您使用带日期的索引,我建议将它们转换为日期时间John Zwinck mentioned。转换后,您当前的方法也工作。