切片 Pandas 数据帧非单调索引

Posted

技术标签:

【中文标题】切片 Pandas 数据帧非单调索引【英文标题】:Slicing a Pandas dataframe non-monotonic index 【发布时间】:2018-06-10 02:17:59 【问题描述】:

我正在尝试对 DataFrame 进行切片以返回时间序列的特定部分。然而,时间是按周标记的,这给我带来了麻烦。

df
       Week  one  two
0   12/3/2017    0    7
1   12/3/2017    6    1
2  12/10/2017    5    8
3  12/10/2017    2    4
4  12/17/2017    3    7
5  12/17/2017    2    0
6  12/24/2017    8    9

我一直在尝试通过将“周”列设置为索引然后使用部分字符串索引来进行切片,但我不断收到一个键错误,提示“无法为非唯一标签获取左切片边界:'12/3/ 2017'"

df = df.set_index('Week')
df = df['12/3/2017':'12/17/2017']

KeyError: "Cannot get left slice bound for non-unique label: '12/3/2017'"

关于如何完成这项工作的任何建议?

【问题讨论】:

【参考方案1】:

是的,使用loc

df.loc['12/3/2017':'12/17/2017']

            one  two
Week                
12/3/2017     0    7
12/3/2017     6    1
12/10/2017    5    8
12/10/2017    2    4
12/17/2017    3    7
12/17/2017    2    0

这适用于v0.21

【讨论】:

感谢您的帮助!我尝试使用loc,但不幸的是我仍然遇到相同的密钥错误 @DH_III 尝试更新到0.21(为此我将版本放在底部)。

以上是关于切片 Pandas 数据帧非单调索引的主要内容,如果未能解决你的问题,请参考以下文章

pandas分层索引(层级索引MultiIndex)的创建取值切片统计计算以及普通索引和层级索引的转换方法

Python pandas 按多个索引范围切片数据帧

如何根据日期时间索引对 Pandas 数据框进行切片

使用索引值列表对 pandas 多索引数据框进行切片 [重复]

pandas:选择索引,然后选择多索引切片上的列

Pandas - 索引操作