下午好。
我有一个问题,我正试图使用Python脚本语言中的"panda"统计数据结构和相关语法来解决。我已经毕业于美国一所大学,目前正在参加Coursera.org的"Python for Data Science"课程,只是为了专业发展,该课程由密歇根大学在Coursera的平台上在线提供。我也不会和任何人分享答案,因为我遵守Coursera的荣誉准则。
首先,我收到了一张关于世界各国获得奥运奖牌的熊猫数据帧图:
# Summer Gold Silver Bronze Total # Winter Gold.1 Silver.1 Bronze.1 Total.1 # Games Gold.2 Silver.2 Bronze.2 Combined total ID
Afghanistan 13 0 0 2 2 0 0 0 0 0 13 0 0 2 2 AFG
Algeria 12 5 2 8 15 3 0 0 0 0 15 5 2 8 15 ALG
Argentina 23 18 24 28 70 18 0 0 0 0 41 18 24 28 70 ARG
Armenia 5 1 2 9 12 6 0 0 0 0 11 1 2 9 12 ARM
Australasia 2 3 4 5 12 0 0 0 0 0 2 3 4 5 12 ANZ
其次,问题是,"哪个国家在夏季奥运会上获得的金牌最多?">
第三,关于如何使用Python的panda语法回答的提示是:"此函数应返回单个字符串值。">
第四,我尝试在Python的panda语法中输入这个作为答案:
import pandas as pd
df = pd.read_csv('olympics.csv', index_col=0, skiprows=1)
def answer_one():
if df.columns[:2]=='00':
df.rename(columns={col:'Country'+col[4:]}, inplace=True)
df_max = df[df[max('Gold')]]
return df_max['Country']
answer_one()
第五,我在Coursera的自动平地机上尝试过其他各种各样的答案,但它不断给出这样的错误信息:
评估函数
answer_one
时出现问题,它引发了一个异常,因此被视为不正确。未获得0.125分。
你能帮我解决这个问题吗?欢迎任何提示/建议/评论。
谢谢Kevin
您可以使用pandas的loc
函数来查找与"黄金"列最大值对应的国家名称:
data = [('Afghanistan', 13),
('Algeria', 12),
('Argentina', 23)]
df = pd.DataFrame(data, columns=['Country', 'Gold'])
df['Country'].loc[df['Gold'] == df['Gold'].max()]
最后一行返回阿根廷作为答案。
编辑1:我刚刚注意到您使用pd.read_csv('olympics.csv', index_col=0, skiprows=1)
导入.csv文件。如果省略skiprows
参数,则会得到一个数据帧,其中.csv文件中的第一行对应于数据帧中的列名。这使得在panda中处理数据帧变得更加容易,这是值得鼓励的。其次,我看到使用index_col=0
参数时,您使用国家名称作为数据帧中的索引。在这种情况下,您应该选择使用index
而不是loc
函数,如下所示:
df.index[df['Gold'] == df['Gold'].max()][0]
import pandas as pd
def answer_one():
df1=pd.Series.max(df['Gold'])
df1=df[df['Gold']==df1]
return df1.index[0]
answer_one()
return df['Gold'].argmax()