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

时间:2016-09-03 17:14:10

标签: python pandas dataframe

名称列中创建包含一些重复单元格值的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]})

enter image description here

我想继续创建另一个DataFrame,其中合并名称列中的重复值,不留下任何重复项。同时我想要 总结约翰所做的付款价值。我继续说:

df_sum = df.groupby('Name', axis=0).sum().reset_index()

enter image description here

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

df_mean = df.groupby('Name', axis=0).mean().reset_index()

enter image description here

但是使用mean()功能,付款列现在显示了John所做的平均付款值,而不是所有付款的总和。

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

1 个答案:

答案 0 :(得分:8)

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

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