Python 为什么熊猫多索引切片从切片外部返回结果?
我有一个多索引的数据集,比如组(字符串)和日期(datetime64)。尝试使用切片来切片此数据集时Python 为什么熊猫多索引切片从切片外部返回结果?,python,pandas,multi-index,Python,Pandas,Multi Index,我有一个多索引的数据集,比如组(字符串)和日期(datetime64)。尝试使用切片来切片此数据集时 .xs(slice(startDate,endDate),level='Date',drop_level = False) 我原以为我会返回具有相同组的数据集,但没有超出开始/结束范围的日期 相反,我将一些组按开始/结束范围切片,一些组缺少条目,而另一些组似乎根本没有切片 例如: d={'group':['a','a','a','b','b','b','b','c','c','c','c','
.xs(slice(startDate,endDate),level='Date',drop_level = False)
我原以为我会返回具有相同组的数据集,但没有超出开始/结束范围的日期
相反,我将一些组按开始/结束范围切片,一些组缺少条目,而另一些组似乎根本没有切片
例如:
d={'group':['a','a','a','b','b','b','b','c','c','c','c','c','c','c','t','t','t','t','t','t','t','t','t','t','t','t','t','t'],
'date':[np.datetime64('2005-02-25'),np.datetime64('2005-02-25'),np.datetime64('2005-02-27'),
np.datetime64('2005-02-25'),np.datetime64('2005-02-26'),np.datetime64('2005-02-27'),np.datetime64('2005-02-26'),
np.datetime64('2005-01-25'),np.datetime64('2005-02-25'),np.datetime64('2005-03-27'),np.datetime64('2005-04-25'),np.datetime64('2005-05-26'),np.datetime64('2005-06-27'),np.datetime64('2005-07-26'),
np.datetime64('2005-01-25'),np.datetime64('2005-02-25'),np.datetime64('2005-03-27'),np.datetime64('2005-04-25'),np.datetime64('2005-05-26'),np.datetime64('2005-06-27'),np.datetime64('2005-07-26'),
np.datetime64('2005-02-25'),np.datetime64('2005-02-25'),np.datetime64('2005-02-27'),np.datetime64('2005-02-25'),np.datetime64('2005-02-26'),np.datetime64('2005-02-27'),np.datetime64('2005-02-26')],
'data':[1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7]}
df = pandas.DataFrame(d)
aggregate = df.groupby(('group','date')).sum()
aggregate
将产生
data
group date
a 2005-02-25 3
2005-02-27 3
b 2005-02-25 4
2005-02-26 12
2005-02-27 6
c 2005-01-25 1
2005-02-25 2
2005-03-27 3
2005-04-25 4
2005-05-26 5
2005-06-27 6
2005-07-26 7
t 2005-01-25 1
2005-02-25 9
2005-02-26 12
2005-02-27 9
2005-03-27 3
2005-04-25 4
2005-05-26 5
2005-06-27 6
2005-07-26 7
及
可能产生
data
group date
a 2005-02-25 3
b 2005-02-25 4
2005-02-26 12
c 2005-01-25 1
2005-02-25 2
t 2005-01-25 1
2005-02-25 9
2005-02-26 12
2005-02-27 9
2005-03-27 3
2005-04-25 4
2005-05-26 5
2005-06-27 6
2005-07-26 7
(在任何人运行该代码段之前,它实际上完全按照预期工作,示例输出是说明性的)
我觉得我一定犯了一个显而易见的错误。
有人能解释一下为什么我在哪里使用了多索引切片错误吗?请提供一个示例,说明您正在描述的行为,以及示例输入/输出。遗憾的是,它使用了大量受保护的数据,我无法重现示例输入的确切问题。我可以发布示例代码来显示我试图解决的问题,但它本身并没有重现问题。@root:添加了示例,虽然我注意到它没有重现问题,但只是对其进行了说明。请提供一个示例,显示您正在描述的行为,以及示例输入/输出。遗憾的是,它使用了大量受保护的数据,我还没能重现我在样本输入中遇到的确切问题。我可以发布示例代码来显示我试图解决的问题,但它本身并没有重现问题。@root:example已添加,尽管我注意到它没有重现问题,但只是演示了它。
data
group date
a 2005-02-25 3
b 2005-02-25 4
2005-02-26 12
c 2005-01-25 1
2005-02-25 2
t 2005-01-25 1
2005-02-25 9
2005-02-26 12
2005-02-27 9
2005-03-27 3
2005-04-25 4
2005-05-26 5
2005-06-27 6
2005-07-26 7