pd.datetime无法转换为日期

时间:2017-07-10 14:01:03

标签: dataframe python-datetime

我有一个数据框,其中有一列'日期',它是string类型,因为我想使用列'日期'作为索引,首先我要将其转换为datetime,所以我做了:

data['Date'] = pd.to_datetime(data['Date'])

然后我做了,

data = data.set_index('Date')

但是当我尝试做的时候

data =  data.loc['01/06/2006':'09/06/2006',]

切片没有完成,没有错误,但切片没有发生,我尝试iloc

data =  data.iloc['01/06/2006':'09/06/2006',]

,错误消息如下:

TypeError: cannot do slice indexing on <class `'pandas.tseries.index.DatetimeIndex'> with these indexers [01/06/2006] of <type 'str'>`

所以我得出的结论是pd.to_datetime没有工作,即使没有提出错误?

有人可以澄清发生了什么吗?提前致谢

2 个答案:

答案 0 :(得分:1)

您似乎需要将datetime字符串的更改顺序更改为YYYY-MM-DD

data =  data.loc['2006-06-01':'2006-06-09']

样品:

data = pd.DataFrame({'col':range(15)}, index=pd.date_range('2006-06-01','2006-06-15'))
print (data)
           col
2006-06-01    0
2006-06-02    1
2006-06-03    2
2006-06-04    3
2006-06-05    4
2006-06-06    5
2006-06-07    6
2006-06-08    7
2006-06-09    8
2006-06-10    9
2006-06-11   10
2006-06-12   11
2006-06-13   12
2006-06-14   13
2006-06-15   14

data =  data.loc['2006-06-01':'2006-06-09']
print (data)

            col
2006-06-01    0
2006-06-02    1
2006-06-03    2
2006-06-04    3
2006-06-05    4
2006-06-06    5
2006-06-07    6
2006-06-08    7
2006-06-09    8

答案 1 :(得分:0)

正如我想要的是创建一个具有原始DataFrame中特定日期的新DataFrame,我将“Date”列转换为Index

data = data.set_index(data['Date'])

然后使用loc

创建新的数据框
data1 =  data.loc['01/06/2006':'09/06/2006']

我对Python很陌生,我认为我需要将datetime列转换为string <E>,但显然不是必需的。感谢您的帮助@jezrael