在使用列中的某些重复单元格值创建DataFrame之后:

import pandas as pd
df = pd.DataFrame({'Name': ['Will','John','John','John','Alex'],
                   'Payment':  [15, 10, 10, 10, 15],
                   'Duration':    [30, 15, 15, 15, 20]})

python - 如何求和并表示一个DataFrame来创建另一个DataFrame-LMLPHP

我想通过创建另一个DataFrame进行操作,在其中将名称列中的重复值合并在一起,不留重复项。同时我要
求和约翰作出的付款值。我继续:
df_sum = df.groupby('Name', axis=0).sum().reset_index()

python - 如何求和并表示一个DataFrame来创建另一个DataFrame-LMLPHP

但是由于df.groupby('Name', axis=0).sum()命令将sum函数应用于DataFrame中的每一列,因此持续时间(以分钟为单位的访问时间)列也将得到处理。相反,我想获取持续时间列的平均值。因此,我将需要使用mean()方法,如下所示:
df_mean = df.groupby('Name', axis=0).mean().reset_index()

python - 如何求和并表示一个DataFrame来创建另一个DataFrame-LMLPHP

但是,使用mean()函数时,付款列现在显示的是John的平均付款值,而不是所有付款的总和。

如何创建一个DataFrame,其中Duration值显示平均值,而Payment值显示总和?

最佳答案

您可以使用groupby.agg将不同的功能应用于不同的列:

df.groupby('Name').agg({'Duration': 'mean', 'Payment': 'sum'})
Out:
      Payment  Duration
Name
Alex       15        20
John       30        15
Will       15        30

关于python - 如何求和并表示一个DataFrame来创建另一个DataFrame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39309435/

10-12 22:03
查看更多