在熊猫时使用时为什么有额外的索引[英] Why there is an extra index when using apply in Pandas

本文是小编为大家收集整理的关于在熊猫时使用时为什么有额外的索引的处理方法,想解了在熊猫时使用时为什么有额外的索引的问题怎么解决?在熊猫时使用时为什么有额外的索引问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

当我在熊猫的用户定义函数中使用apply时,它看起来python正在创建另一个数组.我怎么能摆脱它?这是我的代码:

def fnc(group):
    x = group.C.values
    out = x[np.where(x < 0)]
    return pd.DataFrame(out)

data = pd.DataFrame({'A':np.random.randint(1, 3, 10),
                     'B':3,
                     'C':np.random.normal(0, 1, 10)})

data.groupby(by=['A', 'B']).apply(fnc).reset_index()

创建了此奇怪Level_2索引.有没有办法避免运行我的功能时创建它?

    A   B   level_2   0
0   1   3   0        -1.054134802
1   1   3   1        -0.691996447
2   2   3   0        -1.068693768
3   2   3   1        -0.080342046
4   2   3   2        -0.181869799

推荐答案

因此,您将无法避免显示level_2.这是因为组的结果是其中有几个项目的数据帧:Pandas足够很酷,以了解您的愿望是在分组的键上播放这些项目,但它正在将DataFrame的索引作为额外的级别播放相干输出数据.因此,预计会显式的处理结束时下降级别= -1.

如果要避免重置额外的索引,但仍然有一些后处理,另一种方式是调用转换而不是应用,并从fnc获取返回的数据是您放置的整个组矢量. C3>用于排除的结果.然后,您的DataFrame将没有额外的级别,但之后您需要调用dropna().

本文地址:https://www.itbaoku.cn/post/1728179.html