pandas DataFrame单类别计数实现:统计各职位收发邮件总数量
实现思路
我们需要分别统计每个职位作为发件方的总发送邮件量、作为收件方的总接收邮件量,再将两个维度的数值相加,就能得到每个职位的收发总邮件量。
具体代码实现
import pandas as pd # 假设原始数据已经存为名为 df 的DataFrame # 1. 统计各职位发件总数量 send_total = df.groupby('fromJobtitle')['e-mails'].sum() # 2. 统计各职位收件总数量 receive_total = df.groupby('toJobtitle')['e-mails'].sum() # 3. 合并收发数据并求和,缺失值补0 result = send_total.add(receive_total, fill_value=0).reset_index() # 4. 重命名列名匹配需求 result.columns = ['totalJobtitle', 'e-mails'] # 可选:按邮件总数量降序排序 result = result.sort_values('e-mails', ascending=False, ignore_index=True)
注意事项
- 对于自己发给自己的邮件(比如CEO发给CEO的记录),会同时计入该职位的发件量和收件量,符合「收发总数量」的统计逻辑。如果不需要重复计算,可以先过滤掉
fromJobtitle == toJobtitle的记录再执行上述统计。 fill_value=0的作用是处理仅发过邮件未收过邮件、或仅收过邮件未发过邮件的职位,避免求和出现空值。
内容的提问来源于stack exchange,提问作者darklight213
相关产品推荐
相关产品推荐

