为了账号安全,请及时绑定邮箱和手机立即绑定

从具有条件的数据框中选择列

从具有条件的数据框中选择列

明月笑刀无情 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 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号