gpt4 book ai didi

python - 如何获取 python pandas 数据框中值的不同计数

转载 作者:行者123 更新时间:2023-12-01 03:01:05 26 4
gpt4 key购买 nike

我想获取 python pandas 数据框中值的不同计数并将结果写入新列。这就是我到目前为止所拥有的。

import pandas as pd

df = pd.DataFrame( {
'OrderNo': [1,1,1,1,2,2,2,3,3],
'Barcode': [1234,2345,3456,3456,1234,1234,2345,1234,3456]
} );

df['barcodeCountPerOrderNo'] = df.groupby(['OrderNo', 'Barcode'])['Barcode'].transform('count')

df['distinctBarcodesPerOrderNo'] = '?'

print df

这给出:

   Barcode  OrderNo  barcodeCountPerOrderNo distinctBarcodesPerOrder
0 1234 1 1 ?
1 2345 1 1 ?
2 3456 1 2 ?
3 3456 1 2 ?
4 1234 2 2 ?
5 1234 2 2 ?
6 2345 2 1 ?
7 1234 3 1 ?
8 3456 3 1 ?

但是我怎样才能获得distinctBarcodesPerOrder呢?

   Barcode  OrderNo  barcodeCountPerOrderNo distinctBarcodesPerOrder
0 1234 1 1 3
1 2345 1 1 3
2 3456 1 2 3
3 3456 1 2 3
4 1234 2 2 2
5 1234 2 2 2
6 2345 2 1 2
7 1234 3 1 2
8 3456 3 1 2

最佳答案

您可以使用nunique计算每个订单的唯一条形码数量

Barcode_distinct = df.groupby('OrderNo')['Barcode'].nunique()

结果是 pandas 系列

> OrderNo
> 1 3
> 2 2
> 3 2
> Name: Barcode, dtype: int64

然后将其与原始 DataFrame 合并

df.merge(Barcode_distinct.to_frame(), left_on='OrderNo', right_index=True, suffixes=('', '_unique_per_OrderNo'))

结果是

>    Barcode  OrderNo  Barcode_unique_per_OrderNo
> 0 1234 1 3
> 1 2345 1 3
> 2 3456 1 3
> 3 3456 1 3
> 4 1234 2 2
> 5 1234 2 2
> 6 2345 2 2
> 7 1234 3 2
> 8 3456 3 2

关于python - 如何获取 python pandas 数据框中值的不同计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43847520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com