在sort_index之后使用pandas字符串选择

时间:2018-05-28 19:46:10

标签: python pandas dataframe

我无法弄清楚为什么在下面的代码中取消注释ts = ts.sort_index()会抛出一个ErrorKey:

import datetime
import pandas as pd

df = pd.DataFrame({
    'x': [2, 1, 3],
    'd': [
        datetime.datetime(2018, 5, 21),
        datetime.datetime(2018, 5, 20),
        datetime.datetime(2018, 5, 22)
    ]
})

ts = df.set_index('d')
#ts = ts.sort_index()

ts['2018-05-21']

我的假设是sort_index在某些方面会产生一个新的索引,因此打破了字符串选择,但我找不到任何证据。

为了提供一些上下文,我想对这个时间序列进行排序,以便选择一个时间范围(例如ts['2018-05-21':])。如果我不对它进行排序,它适用于上面的示例,但不适用于时间范围。

1 个答案:

答案 0 :(得分:1)

我建议使用.loc

#ts = df.set_index('d')
#ts = ts.sort_index()
ts.loc['2018-05-21':,:]
Out[102]: 
            x
d            
2018-05-21  2
2018-05-22  3