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
添加回答
舉報