alp*_*ric 6 python dataframe pandas
在列名称中创建具有一些重复单元格值的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]})
Run Code Online (Sandbox Code Playgroud)
我想继续创建另一个DataFrame,其中合并Name列中的重复值,不留下任何重复项.与此同时,我想总结约翰所做的付款价值.我继续说:
df_sum = df.groupby('Name', axis=0).sum().reset_index()
Run Code Online (Sandbox Code Playgroud)
但由于df.groupby('Name', axis=0).sum()
命令将sum函数应用于DataFrame中的每一列,因此也会处理持续时间(以分钟为单位的访问时间)列.相反,我想获得持续时间列的平均值.所以我需要使用mean()
方法,如下所示:
df_mean = df.groupby('Name', axis=0).mean().reset_index()
Run Code Online (Sandbox Code Playgroud)
但是,通过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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1482 次 |
最近记录: |