亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從具有條件的數據框中選擇列

從具有條件的數據框中選擇列

明月笑刀無情 2023-02-22 17:19:57
我今天在學習使用pandas library,遇到了這個我無法完全理解的錯誤。這是我使用的數據框。      name   kda  combat  econ0   Austin  1.45   270.0    678   Austin  1.70   300.0    904   Justin  1.36   230.0    5011  Justin  1.50   270.0    601    Kevin  1.40   230.0    556    Kevin  1.00   100.0   1203     Matt  1.00   180.0    659     Matt  1.40   280.0    702     Nick  2.10   360.0    877     Nick  2.50   340.0    885     Will  1.20   185.0    4510    Will  1.60   260.0    75我試圖獲得平均戰斗分數大于 250 的 name 和 kda 列,我試圖通過這樣做來實現temp = df.groupby('name').mean()temp = temp[temp['combat'] > 250]print(temp['name', 'kda'])但它返回了這個關鍵錯誤KeyError: "['name'] not in index"有人可以解釋為什么我不能從這些臨時數據框中獲取列嗎?還是我的代碼做錯了什么?幸運的是我的朋友幫助了我,我可以通過temp = df.loc[df['combat'] > 250, ['name','kda']]print(temp.groupby('name').mean())這是給的訣竅          kdaname         Austin  1.575Justin  1.500Matt    1.400Nick    2.300Will    1.600先感謝您
查看完整描述

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)


這將返回一個以“名稱”作為列的數據框,您的第一個解決方案將起作用


看看中間步驟,你就會明白發生了什么


查看完整回答
反對 回復 2023-02-22
?
皈依舞

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


查看完整回答
反對 回復 2023-02-22
  • 2 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號