在Pandas中,为什么groupby'key'列在这种情况下消失
问题描述:
我有以下代码...由于某些原因导致'key'列消失。我还注意到其他时候,关键列似乎“随机”消失。我试图隔离案件,这是一个。在在Pandas中,为什么groupby'key'列在这种情况下消失
G N
1 b 2
2 b 3
第二print groupByObj.get_group('b')
结果:
N
1 2
2 3
为什么会出现“键
我usinng大熊猫版本0.20.1
DF = pd.DataFrame([['a', 1], ['b', 2], ['b', 3]], columns = ['G', 'N'])
groupByObj = DF.groupby('G')
print groupByObj.get_group('b')
groupByObj.sum()
print groupByObj.get_group('b')
第一print groupByObj.get_group('b')
结果'列('G')在运行后消失
答
这是熊猫的错误,在所讨论的:
后者仍然是开放的。
从阅读在GitHub上了一下,如在评论中提到的,似乎第二输出想要的行为,并通过添加以下行pandas.core.groupby._GroupBy#_set_group_selection
在sum
情况下获得:
self._reset_cache('_selected_obj')
由于此调用在调用sum
(以及其他一些函数)时发生,因此此G列在第一个get_group
调用中仍可见。顺便说一句 - 在调用mean
以及一些其他功能时也不会执行重置。看起来这个bug比想象的更全面,并没有通过简单的缓存重置来解决。
附加信息:如果在创建对象时传递'as_index = False',则不会发生'groupByObj = DF.groupby('G',as_index = False)'。 – ayhan
这看起来像一个错误,似乎聚合操作以某种方式改变或在'groupby'对象上引入某种缓存操作。这发生在我的机器上,使用熊猫版本'0.20.3'我会在[github]上发布这个问题(https://github.com/pandas-dev/pandas/issues)。一旦调用'sum'然后调用'get_group',就会发生这种情况。对我来说,它看起来像第一个输出是不正确的,'G'列应该成为索引,但它不会执行聚合。 – EdChum
再看一遍,我认为第一个输出是错误的,'G'列应该形成索引,这似乎并没有发生,直到你执行聚合,所以'get_group'没有正确地做到这一点 – EdChum