我有一个包含三个列的数据集:评级,品种和狗 .
import pandas as pd
dogs = {'breed': ['Chihuahua', 'Chihuahua', 'Dalmatian', 'Sphynx'],
'dog': [True, True, True, False],
'rating': [8.0, 9.0, 10.0, 7.0]}
df = pd.DataFrame(data=dogs)
我想计算狗是真的每品种 mean 评级 . 这将是预期的:
breed rating
0 Chihuahua 8.5
1 Dalmatian 10.0
这是我的尝试:
df.groupby('breed')['rating'].mean().where(dog == True)
这是我得到的错误:
NameError: name 'dog' is not defined
但是当我尝试添加 where
条件时,我只会收到错误 . 有人可以建议解决方案吗? TIA
2 回答
分组并选择一列后,您选择的上下文中不再存在
dog
列(即使它确实没有正确访问它) .首先过滤您的数据框,然后使用 groupby 与 mean
另一种解决方案是使
dog
之一的石斑鱼键 . 然后在单独的步骤中按dog
过滤 . 如果您不想丢失非狗的汇总数据,这会更有效 .