gpt4 book ai didi

python - 计算来自 pandas groupby 的匹配值的数量

转载 作者:行者123 更新时间:2023-12-03 23:11:47 25 4
gpt4 key购买 nike

我为商店创建了一个 pandas 数据框

我有列 Transaction 和 Item_Type

import pandas as pd
data = {'Transaction':[1, 2, 2, 2, 3], 'Item_Type':['Food', 'Drink', 'Food', 'Drink', 'Food']}
df = pd.DataFrame(data, columns=['Transaction', 'Item_Type'])
Transaction Item_Type
1 Food
2 Drink
2 Food
2 Drink
3 Food

我正在尝试按交易分组并计算每笔交易的饮料数量,但找不到正确的语法来执行此操作。

df = df.groupby(['Transaction','Item_Type']).size()

这种方法可行,但给了我一个多索引系列,我还不知道如何从中选择每笔交易的饮料。

1/Food   1
2/Drink 2
2/Food 1
3/Food 1

这看起来很笨拙 - 有更好的方法吗?

这个 stackoverflow 看起来最相似 Adding a 'count' column to the result of a groupby in pandas?

最佳答案

pivot_table 的另一种可能方式:

s = df.pivot_table(index='Transaction',
columns='Item_Type',aggfunc=len).stack().astype(int)

或者:

s = df.pivot_table(index=['Transaction','Item_Type'],aggfunc=len) #@thanks @Ch3steR
s.index = s.index.map("{0[0]}/{0[1]}".format)

print(s)

1/Food 1
2/Drink 2
2/Food 1
3/Food 1

或者如果您希望过滤特定类别:

to_filter = 'Drink'
(df.pivot_table(index='Transaction',columns='Item_Type',aggfunc=len,fill_value=0)
.filter(items=[to_filter]))

 Item_Type    Drink
Transaction
1 0
2 2
3 0

关于python - 计算来自 pandas groupby 的匹配值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62236185/

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