我在我的论文中使用的数据集有一个问题。数据集包含客户购买信息,我想知道客户购买了多少次,总购买金额是多少,以及他们的平均支出是多少。我目前拥有的数据看起来像这样:
id date total_purchase_amount product_price
0 84288 2020-1-1 100 50
1 84288 2020-1-1 50
2 84288 2020-3-7 80 20
3 84288 2020-3-7 60
4 84289 2020-8-16 200 10
5 84289 2020-8-16 50
6 84289 2020-8-16 10
7 84288 2020-8-16 80
8 84290 2020-4-2 10 10
9 84290 2020-4-8 30 30
10 84291 2020-5-23 45 45一些客户进行了多次购买,导致其客户ID在数据集中多次出现。我想实现的是一个数据集,它看起来像这样:
id total_purchase_amount average_spending times_purchased
0 84288 180 45 2
1 84289 200 37,5 1
2 84290 40 20 2
3 84291 45 45 1有没有人能建议我如何实现这一点?我使用的数据集非常大,因此无法手动解决此问题。
下面是获取第一个数据帧的代码:
import pandas as pd
data = [[84288, "2020-1-1", 100, 50],[84288, "2020-1-1", "", 50],[84288, "2020-3-7", 80, 20], [84288, "2020-3-7", "", 60],[84289, "2020-8-16", 200, 10],[84289, "2020-8-16", "", 50],[84289, "2020-8-16", "", 10], [84289, "2020-8-16", "", 80],[84290, "2020-4-2", 10, 10],[84290, "2020-4-8", 30, 30],[84291, "2020-5-23", 45, 45]]
df = pd.DataFrame(data, columns=['id','date','total_purchase_amount','purchase_amount'])发布于 2020-07-29 21:12:54
将空白行替换为NA,并在分组中执行数学运算。
df.replace('', np.NaN, inplace=True)
df.groupby('id')[['total_purchase_amount','purchase_amount']].agg(average_spending=('purchase_amount','mean'),times_purchased=('total_purchase_amount','count'))
average_spending times_purchased
id
84288 45.0 2
84289 37.5 1
84290 20.0 2
84291 45.0 1https://stackoverflow.com/questions/63154203
复制相似问题