首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用索引和MultiIndex对熊猫数据数据进行数据分割

用索引和MultiIndex对熊猫数据数据进行数据分割
EN

Stack Overflow用户
提问于 2016-04-14 11:31:04
回答 2查看 7.3K关注 0票数 10

通过使用单个索引的dataframe,我可以执行以下操作:

代码语言:javascript
运行
复制
df2 = DataFrame(data={'data': [1,2,3]}, 
                index=Index([dt(2016,1,1),
                      dt(2016,1,2),
                      dt(2016,2,1)]))

>>> df2['2016-01 : '2016-01']
                data
    2016-01-01     1
    2016-01-02     2

>>> df2['2016-01-01' : '2016-01-01']
                data
    2016-01-01     1

日期时间切片工作时,你给它一个完整的一天(即2016-01-01),它也工作,当你给它一个部分日期,如只是一年和月份(2016-01)。所有这些都很好,但是当您引入一个多索引时,它只适用于完整的日期。部分日期切片似乎不再有效。

代码语言:javascript
运行
复制
df = DataFrame(data={'data': [1, 2, 3]},
               index=MultiIndex.from_tuples([(dt(2016, 1, 1), 2),
                                             (dt(2016, 1, 1), 3),
                                             (dt(2016, 1, 2), 2)],
                                             names=['date', 'val']))


 >>> df['2016-01-01 : '2016-01-02']
                            data
     date       val     
     2016-01-01 2           1
                3           2
     2016-01-02 2           3

好吧,没问题,但部分日期:

代码语言:javascript
运行
复制
>>> df['2016-01' : '2016-01']
 File "pandas/index.pyx", line 134, in pandas.index.IndexEngine.get_loc      (pandas/index.c:3824)
 File "pandas/index.pyx", line 154, in pandas.index.IndexEngine.get_loc (pandas/index.c:3704)
 File "pandas/hashtable.pyx", line 686, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12280)
 File "pandas/hashtable.pyx", line 694, in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:12231)
  KeyError: '2016-01'

(我缩短了追溯时间)。

知道这有可能吗?这是个虫子吗?有没有办法做我想做的事,而不用求助于这样的事情:

代码语言:javascript
运行
复制
df.loc[(df.index.get_level_values('date') >= start_date) &
       (df.index.get_level_values('date') <= end_date)]

任何提示、评论、建议等都将不胜感激!我试过很多其他的东西,但都没有用!

EN

Stack Overflow用户

回答已采纳

发布于 2016-04-14 11:57:56

横截面应起作用:

代码语言:javascript
运行
复制
df.xs(slice('2016-01-01', '2016-01-01'), level='date')

文档:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.xs.html

票数 15
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36621778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档