熊猫`.xs`方法的怪异行为

时间:2019-03-03 23:33:49

标签: python python-3.x pandas

我有这个例子:

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.2pandas版本0.23.4IPython版本6.5.0使用conda安装。

0 个答案:

没有答案