【问题标题】:Value Count with List in New Column that Comprised it Pandas [duplicate]包含 Pandas 的新列中包含列表的值计数 [重复]
【发布时间】:2020-08-02 23:23:47
【问题描述】:

我有一个数据框,其中包含拨打各种号码的个人。因此:

Person          Called
A                 123
B                 123
C                 234

我需要创建一个新的数据框,列出拨打该号码的人的列表和计数。像这样:

Persons         Called         Count
A, B             123             2
C                234             1

我很确定我可以创建一个 for 循环来计算次数并将它们附加到列表中,但我想知道是否有更有效的方法可以在没有 for 循环的情况下执行此操作。如果格式不正确,请见谅。我是论坛的新手。

【问题讨论】:

    标签: python pandas for-loop list-comprehension


    【解决方案1】:

    name aggregationsGroupBy.agg 一起使用:

    df1 = (df.groupby('Called')
             .agg(Persons = ('Person',','.join), 
                  Count=('Person','size'))
             .reset_index())
    print (df1)
       Called Persons  Count
    0     123     A,B      2
    1     234       C      1
    

    因为只能处理一列,所以在groupby 之后使用带有元组和列的替代方法:

    df1 = (df.groupby('Called')['Person']
             .agg([('Persons', ','.join), 
                   ('Count','size')])
             .reset_index())
    print (df1)
       Called Persons  Count
    0     123     A,B      2
    1     234       C      1
    

    【讨论】:

    • @ansev - 如果与named aggregation 一起使用它会丢失第一列。
    猜你喜欢
    • 2018-08-18
    • 2021-12-31
    • 2016-09-19
    • 2021-07-27
    • 2014-01-22
    • 1970-01-01
    • 2017-08-15
    • 2022-11-14
    • 1970-01-01
    相关资源
    最近更新 更多