gpt4 book ai didi

Python Pandas DF - 将列与另一列的相应频率计数分组

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

我有一个Python数据框。在其中,我有一栏包含不同的人,另一栏包含他们购买的不同产品。我尝试为每个人创建一个他们购买每种产品的金额的摘要。因此,我尝试按人员和产品进行分组并进行计数,但不知何故我遇到了麻烦。

在下面找到一个小玩具示例。

import pandas as pd

# Create toy data frame
A = [0,0,1,2,2,2,0]
B = ['Person1','Person1','Person1','Person1','Person2','Person2','Person 2']
df = pd.DataFrame([A,B]).transpose()
df.columns = ['cat', 'per']

# Desired Output

Cat0 Cat1 Cat2
Person 1 2 1 1
Person 2 1 0 2

最佳答案

您可以先将字符串 cat 添加到值中,但需要通过 astypeint 转换为 str 。然后使用pivot_table最后rename_axis (pandas 0.18.0 中的新功能):

import pandas as pd

# Create toy data frame
A = [0,0,1,2,2,2,0]
B = ['Person1','Person1','Person1','Person1','Person2','Person2','Person2']
df = pd.DataFrame([A,B]).transpose()
df.columns = ['cat', 'per']

print (df)
cat per
0 0 Person1
1 0 Person1
2 1 Person1
3 2 Person1
4 2 Person2
5 2 Person2
6 0 Person2

df['cat'] = 'cat' + df.cat.astype(str)
df = df.pivot_table(index='per', columns='cat', aggfunc=len,fill_value=0)

df = df.rename_axis(None).rename_axis(None, axis=1)
#if use older pandas as 0.18.0
#df.columns.name= None
#df.index.name= None

print (df)
cat0 cat1 cat2
Person1 2 1 1
Person2 1 0 2

关于Python Pandas DF - 将列与另一列的相应频率计数分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37682921/

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