如何在 Pandas 中计算调和平均数

3

我有一个类似下面这样的数据框,Words指的是每封电子邮件发送的单词数。

sender receiver words 
a        b       10
a        c       5
a        c       15
b        a       50
b        a       30

我对Pandas比较新,想要计算以下两个指标的调和平均数:1)每对人之间发送的电子邮件数量 2)两个人之间发送的总字数。如何使用scipy.stats中的hmean()函数来获得所需的输出?

sender  receiver  total_emails  total_words
   a        b                   hmean([10])
   a        c                   hmean([5,15])
   b        a                   hmean([50,30])

对于邮件的总数,我不确定应该使用哪个正确的公式。任何帮助将不胜感激!


请从 入门指南 中重申主题范围提问方式。"教我这个基本技巧"不是 Stack Overflow 涉及的问题。我们期望您做出诚实的尝试,然后就您的算法或技术提出具体的问题。Stack Overflow 不旨在替代现有的文档和教程。 - Prune
任何PANDAS教程都会教你如何将函数应用于groupby的结果。寻找一个带有summean的例子,然后只需将该函数替换为hmean即可。 - Prune
另外我想说这个问题可以有不同的解释。例如,您可能正在询问整个df的邮件总数,或者对于每一对senderreceiver,您可能需要通过示例进行澄清。 - Norhther
1个回答

4

您可以使用 groupby

from scipy import stats
df = df.groupby(['sender', 'receiver']).agg(stats.hmean).reset_index(name='total_words')

输出:

  sender receiver  total_words
0      a        b         10.0
1      a        c          7.5
2      b        a         37.5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接