首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >奥运奖牌积分制,金牌3枚,银牌2枚,铜牌1枚

奥运奖牌积分制,金牌3枚,银牌2枚,铜牌1枚
EN

Stack Overflow用户
提问于 2017-02-10 07:43:55
回答 3查看 5K关注 0票数 0

编写一个函数,创建一个名为" points“的级数,这是一个加权值,其中每枚金牌(Gold.2)计3分,银牌(Silver.2)计2分,铜牌(Bronze.2)计1分。该函数应该只返回您创建的列( Series对象)。

此函数应返回长度为146的名为Points的系列

我是python和pandas的新手,我不知道这段代码是否正确,但我得到了一个关键错误

代码语言:javascript
复制
KeyError: "['Gold.2' 'Silver.2' 'Bronze.2'] not in index" for this code: 

import pandas as pd

df = pd.read_csv('olympics.csv', index_col=0, skiprows=1)

def answer_four():

    df['Points'] = df[(df[['Gold.2','Silver.2','Bronze.2']], [3,2,1])]
    #df[['Gold.2','Silver.2','Bronze.2']].apply(lambda x:(x,[3,2,1]))
    olympic_points_df = df[['Points']]


    return olympic_points_df

answer_four()

这方面的任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2017-02-16 08:31:12

一些类似这样的东西就可以解决这个问题。

代码语言:javascript
复制
def answer_four():
    df['Points'] = df['Gold.2']*3 + df['Silver.2']*2 + df['Bronze.2'] 
    return df['Points']
票数 2
EN

Stack Overflow用户

发布于 2019-02-20 06:31:14

代码语言:javascript
复制
def answer_four():
    df['Points'] = df['Gold.2']*3 + df['Silver.2']*2 + df['Bronze.2']
    Points = pd.Series(df['Points'],index=df.index)
    return Points

answer_four()
票数 0
EN

Stack Overflow用户

发布于 2020-06-16 20:36:07

您可以从检查列名开始,如果需要,执行一些重命名:

代码语言:javascript
复制
import pandas as pd

df = pd.read_csv('olympics.csv',
                 index_col=0,
                 skiprows=1
                )

for col in df.columns:
    if 'gold' in col.lower():
        print(col)
        # and maybe perform a rename if needed: 
        # df.rename(columns={col:'Gold'+'.2'},
        #           inplace=True)


def answer_four():
    df['Points'] = pd.Series((df['Gold.2']*3) + (df['Silver.2']*2) + df['Bronze.2'])
    return df['Points']


answer_four()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42149037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档