【发布时间】:2020-10-09 21:18:14
【问题描述】:
by = "B" 块在 case1 和 case2 中都有重复的索引,
为什么 case1 有效,而 case2 无效。
案例1
df1 = pd.DataFrame({"a":[0,100,200], "by":["A","B","B"]}, index=[0,1,1])
df1.groupby("by").diff()
# result is okay
案例2
df2 = pd.DataFrame({"a":[0,100,200], "by":["C","B","B"]}, index=[0,1,1])
df2.groupby("by").diff()
# throws ValueError: cannot reindex from a duplicate axis
【问题讨论】:
-
bug可能吗? -
如果你通过
sort=False它工作正常。这让我想到了第一个 df,groupby 按字母顺序排序,索引是 0 后跟 1 - 不知何故,程序不会将其视为重复项。然而,第二个df,它分组,按字母顺序排序,但B在C之前。程序看到两个1,两个B并触发错误。如果你设置sort=False它以C开头,索引从0开始,程序看不到欺骗,一切都很好。为什么?不知道。只是思考错误的可能原因。不过我建议你提出问题。 -
此错误已在
v.1.1.0中修复。它在v.1.1.0中运行良好,在v.1.0.3中引发错误 -
我最近向 pandas 做了一个 PR,所以我有 pandas 大师
v1.1.0并在v.1.1.0中运行它们都运行良好并给出了预期的结果。我找不到与上述问题相关的 PR 或问题,一旦找到,我会在此处留下链接。 -
@sammywemmy 是的,
v1.1.0会好很多。检查whats new in 1.1.0和 groupby/resample/rolling 下的第一个错误修复是问题中问题的修复。
标签: python pandas pandas-groupby