Python:我的日期索引出了什么问题?

时间:2019-11-07 14:01:27

标签: python pandas date dataframe indexing

我有一个使用日期作为索引的数据框。尽管我可以从series.index中读取索引值,但是我无法获得相应的记录。

series = pd.DataFrame([[datetime.date(2019,1,1), 'A', 4], [datetime.date(2019,1,2), 'B', 6]], columns = ('Date', 'Index', 'Value'))
series2 = series.pivot(index='Date', columns='Index', values='Value')
index = series2.index[0]

到目前为止,一切正常。 但是这一行代码失败了:

row = series[index]

错误消息是

KeyError: datetime.date(2019, 1, 1)

为什么会失败,我该如何解决?

2 个答案:

答案 0 :(得分:0)

使用Series.loc进行选择,但在series2中使用,因为在series中是RangeIndex,而不是日期:

row = series2.loc[index]
print (row)
Index
A    4.0
B    NaN
Name: 2019-01-01, dtype: float64

详细信息

print (series)
         Date Index  Value
0  2019-01-01     A      4
1  2019-01-02     B      6

print (series.index)
RangeIndex(start=0, stop=2, step=1)

print (series2)
Index         A    B
Date                
2019-01-01  4.0  NaN
2019-01-02  NaN  6.0

答案 1 :(得分:0)

在您的三行之后添加此部分: series.set_index('Date', inplace=True)

所以,整个事情是:

import pandas as pd
import datetime

series = pd.DataFrame([[datetime.date(2019,1,1), 'A', 4], 
    [datetime.date(2019,1,2), 'B', 6]], 
    columns = ('Date', 'Index', 'Value'))
series2 = series.pivot(index='Date', columns='Index', 
    values='Value')
index = series2.index[0]
series.set_index('Date', inplace=True) # this part was added
series.loc[index]
Out[57]: 
Index    A
Value    4
Name: 2019-01-01, dtype: object