我有这个例子:
import pandas as pd
from io import StringIO
data = """
key,date,col
s1,2018-01-21,1.0
s1,2018-02-23,1.0
s1,2018-04-24,0.0
s1,2018-05-25,0.0
s2,1993-01-09,1.0
s2,1993-01-09,1.0
s2,1993-01-09,1.0
"""
d = pd.read_csv(StringIO(data))
d['date'] = pd.to_datetime(d['date'])
d.set_index(['key', 'date'], inplace=True)
d.sort_index(ascending=True, inplace=True)
d
Out[4]:
col
key date
s1 2018-01-21 1.0
2018-02-23 1.0
2018-04-24 0.0
2018-05-25 0.0
s2 1993-01-09 1.0
1993-01-09 1.0
1993-01-09 1.0
下一行给出预期结果:
d.loc[(slice(None), '2018'),:]
Out[5]:
col
key date
s1 2018-01-21 1.0
2018-02-23 1.0
2018-04-24 0.0
2018-05-25 0.0
但是下面的代码给出了非常意外的结果,它选择了1993年的一行。为什么会这样?我宁愿抛出一个错误,说找不到索引。
d.xs('2018', level=1, drop_level=False)
Out[6]:
col
key date
s1 2018-02-23 1.0
2018-04-24 0.0
2018-05-25 0.0
s2 1993-01-09 1.0
仅需添加以下注释,我使用的是Fedora 29,Python 3.7.2
,pandas
版本0.23.4
和IPython
版本6.5.0
使用conda
安装。