在使用列列中的某些重复单元格值创建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]})
我想通过创建另一个DataFrame进行操作,在其中将名称列中的重复值合并在一起,不留重复项。同时我要
求和约翰作出的付款值。我继续:
df_sum = df.groupby('Name', axis=0).sum().reset_index()
但是由于
df.groupby('Name', axis=0).sum()
命令将sum函数应用于DataFrame中的每一列,因此持续时间(以分钟为单位的访问时间)列也将得到处理。相反,我想获取持续时间列的平均值。因此,我将需要使用mean()
方法,如下所示:df_mean = df.groupby('Name', axis=0).mean().reset_index()
但是,使用
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/