1

我有一个使用日期作为索引的数据框。虽然我可以从 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)

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

4

2 回答 2

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
于 2019-11-07T14:07:55.373 回答
0

用于Series.loc选择,但 in series2,因为 inseriesRangeIndex,而不是日期:

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
于 2019-11-07T14:02:26.190 回答