输入数据帧df如下所示:

item    row
Apple   12
Apple   12
Apple   13
Orange  13
Orange  14
Lemon   14

输出数据帧需要

item    unique_row      nunique_row     count
Apple   {12,13}             2            {2,1}
Orange  {13,14}             2            {1,1}
Lemon   {14}                1            {1}

Tried Code:

df.groupby('item', as_index=False)['row'].agg({'unique_row': lambda x: set(x)
                                                ,'nunique_row': lambda x: len(set(x))})

因此,在这里,不确定如何在.agg函数中添加条件来生成列‘count’.列‘count’表示每个行值的value_count个数字. 任何帮助都将不胜感激.谢谢!

推荐答案

您需要转换为列表或集合:

(df.groupby('item', as_index=False)['row']
   .agg({'unique_row': lambda x: list(x.unique()),
         'nunique_row': lambda x: len(set(x)),
         'count': lambda x: list(x.value_counts(sort=False)), # or set(x.value_counts())
        })
)

输出:

     item unique_row  nunique_row   count
0   Apple   [12, 13]            2  [2, 1]
1   Lemon       [14]            1     [1]
2  Orange   [13, 14]            2  [1, 1]

Python-3.x相关问答推荐

Pandas groupby基于索引的连续列值相等

是否有必要使用Threads()中的args显式地将共享变量传递给Python中的线程函数或直接访问它?

如何验证具有内部json字符串的json字符串?

将自定义函数应用于 pandas 数据框的每一列

torch.stack([t1, t1, t1], dim=1)与torch.hstack([t1, t1, t1])之间有什么区别?

python 分代垃圾收集:get_count 没有报告正确的对象创建数?

如何统计一个值连续出现的次数?

以不规则频率识别数据框日期时间列上缺失的日期,并用关联值填充它们

使用gekko python的混合整数非线性规划

如何使用`re.findall`从字符串中提取数据

裁剪复数以解决 exp 中的溢出错误

使用条件参数为 super() 调用 __init__

ValueError:FixedLocator 位置的数量 (5),通常来自对 set_ticks 的调用,与刻度标签的数量 (12) 不匹配

if 语句中冒号的语法错误

PIL 在图像上绘制半透明方形覆盖

变量类型注解NameError不一致

Python 3.4 多处理队列比 Pipe 快,出乎意料

如何将文档字符串放在 Enums 上?

如何在 Pandas 中的超 Big Data 框上创建数据透视表

finally 总是在 try 块返回之前运行,那么为什么 finally 块中的更新不会影响 try 块返回的变量的值呢?