使用pd.to_datetime将日期字符串转换为日期时删除时间戳

时间:2017-09-16 22:26:40

标签: python pandas dataframe

我的日期是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

2 个答案:

答案 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。转换后,您当前的方法工作。