包含 Pandas 的新列中包含列表的值计数 [重复]

Posted

技术标签:

【中文标题】包含 Pandas 的新列中包含列表的值计数 [重复]【英文标题】:Value Count with List in New Column that Comprised it Pandas [duplicate] 【发布时间】: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 循环的情况下执行此操作。如果格式不正确,请见谅。我是论坛的新手。

【问题讨论】:

【参考方案1】:

将name aggregations 与GroupBy.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 一起使用它会丢失第一列。

以上是关于包含 Pandas 的新列中包含列表的值计数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 检查最后 N 行的值,基于结果的新列

将来自一个数据框的值合并到 Pandas 中的新列中[重复]

pandas 中的新列 - 通过应用列表 groupby 将系列添加到数据框

Pandas df 操作:如果其他列行重复,则带有值列表的新列 [重复]

如何计算 groupby 对象中包含的多个列表并将该组列表中的每个值的计数相加

如何检查一系列字符串是不是包含在 PANDAS DataFrame 列中并将该字符串分配为行中的新列?