如何使用pandas中的条件执行groupby和transform计数

2024-05-26 09:20:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

# Import pandas library 
import pandas as pd
import numpy as np

# data
data = [['tom', 10,2,'c',100,'x'], ['tom',16 ,3,'a',100,'x'], ['tom', 22,2,'a',100,'x'],
        ['matt', 10,1,'c',100,'x'], ['matt', 15,5,'b',100,'x'], ['matt', 14,1,'b',100,'x']]

# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['Name', 'Attempts','Score','Category','Rating','Other'])
df['AttemptsbyRating'] = df.groupby(by=['Rating'])['Attempts'].transform('count')
df

enter image description here

然后我尝试创建额外的列-一个显示按评级分组的尝试次数(如上所示),然后尝试做另一个,我想计算大于1的分数。我试过:

df['scoregreaterthan1'] = df[df.groupby(by=['Rating'])['Score'].transform('count')>1]

我得到一个ValueError: Wrong number of items passed 7, placement implies 1

基本上,在上表中,我希望每列显示4分(4分大于1分)

任何帮助都将不胜感激!谢谢


Tags: importdataframepandasdfdatabyastransform