2 回答
TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
當(dāng)您執(zhí)行 a 時(shí)groupby("col_name"),默認(rèn)行為是 pandas 將 the 設(shè)置col_name為索引
在您的情況下,您可以將名稱設(shè)置為數(shù)據(jù)幀索引
您可以使用
temp = df.groupby('name').mean()
temp = temp[temp['combat'] > 250]
print(temp['kda'])
得到你想要的結(jié)果(它會(huì)返回一個(gè)系列)
另一種選擇是as_index=False與 groupby 一起使用
groupby('col_name', as_index=False)
這將返回一個(gè)以“名稱”作為列的數(shù)據(jù)框,您的第一個(gè)解決方案將起作用
看看中間步驟,你就會(huì)明白發(fā)生了什么
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
替代答案。
.reset_index().groupby()可以在下面的代碼中使用。此外,在打印時(shí),如果需要打印兩列以上,您可能需要添加[[]]而不是。[]
# 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
添加回答
舉報(bào)
