2 回答
TA贡献1890条经验 获得超9个赞
当您执行 a 时groupby("col_name"),默认行为是 pandas 将 the 设置col_name为索引
在您的情况下,您可以将名称设置为数据帧索引
您可以使用
temp = df.groupby('name').mean()
temp = temp[temp['combat'] > 250]
print(temp['kda'])
得到你想要的结果(它会返回一个系列)
另一种选择是as_index=False与 groupby 一起使用
groupby('col_name', as_index=False)
这将返回一个以“名称”作为列的数据框,您的第一个解决方案将起作用
看看中间步骤,你就会明白发生了什么
TA贡献1851条经验 获得超3个赞
替代答案。
.reset_index().groupby()可以在下面的代码中使用。此外,在打印时,如果需要打印两列以上,您可能需要添加[[]]而不是。[]
# Import libraries
import pandas as pd
# Create DataFrame
df = pd.DataFrame({
'name': ['Austin','Austin','Justin','Justin','Kevin','Kevin',
'Matt','Matt','Nick','Nick','Will','Will'],
'kda': [1.45,1.70,1.36,1.50,1.40,1.40,1.0,1.30,2.10,2.50,1.20,1.60],
'combat':[270.0,300.0,230.0,270.0,230.0,100.0,180,280,360,340,185,260],
'econ':[67,90,50,60,55,120,65,70,87,88,45,75]
})
# Groupby (copy pasted code from question and modified)
temp = df.groupby('name').mean().reset_index()
temp = temp[temp['combat'] > 250]
print(temp[['name', 'kda']])
输出
name kda
0 Austin 1.575
4 Nick 2.300
添加回答
举报