我有一个数据框,其中有一列'日期',它是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
没有工作,即使没有提出错误?
有人可以澄清发生了什么吗?提前致谢
答案 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