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

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

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

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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信