熊猫“as_index”功能无法按预期工作

RDJ*_*RDJ 5 python pandas

这是我称为“调用”的原始数据框的最小可重现示例:

       phone_number    call_outcome   agent  call_number
0      83473306392   NOT INTERESTED  orange            0
1     762850680150  CALL BACK LATER  orange            1
2     476309275079   NOT INTERESTED  orange            2
3     899921761538  CALL BACK LATER     red            3
4     906739234066  CALL BACK LATER  orange            4
Run Code Online (Sandbox Code Playgroud)

写这个熊猫命令...

most_calls = calls.groupby('agent') \
.count().sort('call_number', ascending=False)
Run Code Online (Sandbox Code Playgroud)

返回这个...

           phone_number  call_outcome  call_number
agent                                          
orange          2234          2234         2234
red             1478          1478         1478
black            750           750          750
green            339           339          339
blue             199           199          199
Run Code Online (Sandbox Code Playgroud)

这是正确的,但事实上我希望“代理”是一个变量而不是索引。

我曾as_index=False多次使用该函数,并且熟悉指定axis=1. 然而,在这种情况下,我在何处或如何合并这些参数并不重要,每个排列都会返回一个错误。

这些是我尝试过的一些示例以及相应的错误:

most_calls = calls.groupby('agent', as_index=False) \
.count().sort('call_number', ascending=False)

ValueError: invalid literal for long() with base 10: 'black'
Run Code Online (Sandbox Code Playgroud)

most_calls = calls.groupby('agent', as_index=False, axis=1) \
.count().sort('call_number', ascending=False)

ValueError: as_index=False only valid for axis=0
Run Code Online (Sandbox Code Playgroud)

Ami*_*ory 4

我相信,不管groupby你做了什么操作,你只需要打电话reset_index说索引列应该只是一个常规列。

从数据模型开始:

import pandas as pd
calls = pd.DataFrame({
    'agent': ['orange', 'red'],
    'phone_number': [2234, 1478],
    'call_outcome': [2234, 1478],
})
>> calls
    agent   call_outcome    phone_number
0   orange  2234    2234
1   red     1478    1478
Run Code Online (Sandbox Code Playgroud)

这是您附加的操作reset_index()

>> calls.groupby('agent').count().sort('phone_number', ascending=False).reset_index()
    agent   call_outcome    phone_number
0   orange  1   1
1   red     1   1
Run Code Online (Sandbox Code Playgroud)