Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/pandas/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 如何在datetime的多索引中设置索引?_Pandas - Fatal编程技术网

Pandas 如何在datetime的多索引中设置索引?

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

我有这个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.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”不支持可变操作。