Pandas 分组模式 |如何处理平等值(value)观

标签 pandas

我需要提取客户购买的“mode”操作系统品牌。我的问题是,当有品牌“抽签”时,返回的不是值或列表。

import pandas as pd
import numpy as np
data = pd.DataFrame({
    'status' :  ['pending', 'pending','pending', 'canceled','canceled','canceled', 'confirmed', 'confirmed','confirmed'],
    'clientId' : ['A', 'B', 'C', 'A', 'D', 'C', 'A', 'B','C'],
    'partner' :  ['A', np.nan,'C', 'A',np.nan,'C', 'A', np.nan,'C'],
    'product' : ['afiliates', 'pre-paid', 'giftcard','afiliates', 'pre-paid', 'giftcard','afiliates', 'pre-paid', 'giftcard'],
    'brand' : ['brand_1', 'brand_2', 'brand_3','brand_1', 'brand_2', 'brand_3','brand_1', 'brand_3', 'brand_3'],
    'gmv' : [100,100,100,100,100,100,100,100,100]})

data = data.astype({'partner':'category','status':'category','product':'category', 'brand':'category'})

sumary  = data.groupby(['clientId', 'product'], observed=True).aggregate({'brand':pd.Series.mode})
sumary = sumary.unstack()
sumary

output

对于客户“B”的“预付费”情况,哪种方式比较好?

最佳答案

如果您想要一个列表作为输出,请显式转换 to_list :

sumary  = (data.groupby(['clientId', 'product'], observed=True)
               .aggregate({'brand': lambda x: x.mode().tolist()})
           )
sumary = sumary.unstack()

或者使用statistics.multimode

from statistics import multimode

sumary  = (data.groupby(['clientId', 'product'], observed=True)
               .aggregate({'brand':multimode})
          )
sumary = sumary.unstack()
              brand                               
product   afiliates   giftcard            pre-paid
clientId                                          
A         [brand_1]        NaN                 NaN
B               NaN        NaN  [brand_2, brand_3]
C               NaN  [brand_3]                 NaN
D               NaN        NaN           [brand_2]

关于Pandas 分组模式 |如何处理平等值(value)观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77661382/

相关文章:

csv - 将 pandas 列转换为逗号分隔列表以在 sql 语句中使用

python - 将请求文本响应加载到 Pandas 数据框中

python - Matplotlib 工作流程

python - 有效地将数据帧作为 y 和 X 传递给 scikit-learn 拟合

python - 根据特定日期值对 pandas 数据框进行子集化

python - 在 pandas 中计算数据集的每月天值

python - Pandas Dataframe 查找所有列相等的行

python - NetworkX/Pandas - 无法将节点的度数输出到 .txt 文件中(错误消息)

python - Pandas 适用于多列输出滚动

python - 在 pandas 中使用正则表达式验证字符串