Pandas 如何在datetime的多索引中设置索引?
我有这个df:Pandas 如何在datetime的多索引中设置索引?,pandas,Pandas,我有这个df: open high low close volume date symbol 2014-02-20 AAPL 69.9986 70.5252 69.4746 69.7569 76529103 MSFT 33.5650 33.8331 33.4087 33.7
open high low close volume
date symbol
2014-02-20 AAPL 69.9986 70.5252 69.4746 69.7569 76529103
MSFT 33.5650 33.8331 33.4087 33.7259 27541038
2014-02-21 AAPL 69.9727 70.2061 68.8967 68.9821 69757247
MSFT 33.8956 34.2619 33.8241 33.9313 38030656
2014-02-24 AAPL 68.7063 69.5954 68.6104 69.2841 72364950
MSFT 33.6723 33.9269 33.5382 33.6723 32143395
从这里返回:
from datetime import datetime
from iexfinance.stocks import get_historical_data
from pandas_datareader import data
import matplotlib.pyplot as plt
import pandas as pd
start = '2014-01-01'
end = datetime.today().utcnow()
symbol = ['AAPL', 'MSFT']
prices = pd.DataFrame()
datasets_test = []
for d in symbol:
data_original = data.DataReader(d, 'iex', start, end)
data_original['symbol'] = d
prices = pd.concat([prices,data_original],axis=0)
prices = prices.set_index(['symbol'], append=True)
prices.sort_index(inplace=True)
尝试获取一周中的某一天时:
A['day_of_week'] = features.index.get_level_values('date').weekday
我得到一个错误:
AttributeError:“Index”对象没有“weekday”属性
我试图将日期索引更改为日期时间
prices['date'] = pd.to_datetime(prices['date'])
但我犯了这个错误:
KeyError:“日期”
你知道如何保留两个索引,日期+符号,但更改其中一个(日期)tp datetime,这样我就可以得到一周中的哪一天吗?看起来索引的
date
级别包含字符串,而不是datetime对象。一种解决方案是将所有多索引级别重置为列,将date
列转换为datetime,然后将多索引设置回原位。然后,您可以按照通常的方式继续使用datetime访问器,如.weekday
prices = prices.reset_index()
prices['date'] = pd.to_datetime(prices['date'])
prices = prices.set_index(['date', 'symbol'])
prices.index.get_level_values('date').weekday
Int64Index([3, 3, 4, 4, 0, 0, 1, 1, 2, 2,
...
1, 1, 2, 2, 3, 3, 4, 4, 1, 1],
dtype='int64', name='date', length=2516)
请尝试df.index.levels[0]=pd.to_datetime(df.index.levels[0])类型错误:“FrozenList”不支持可变操作。