pd.datetime 无法转换为日期

pd.datetime is failing to convert to date

我有一个数据框,其中有一列'Date',它是string类型,因为我想使用列'Date'作为索引,首先我想要将其转换为 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 没有工作,即使没有引发错误?

任何人都可以澄清发生了什么事吗?提前致谢

您似乎需要将 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

因为我想要创建一个新的 DataFrame,其中包含来自原始 DataFrame 的特定日期,我将列 'Date' 转换为 Index

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

然后使用 loc

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

我是 Python 的新手,我认为我需要将 datetime 列 'Date' 转换为 string,但显然没有必要。感谢您的帮助@jezrael