下午好。
我有一个问题要尝试使用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分未授予。
能帮我解决这个问题吗?欢迎任何提示/建议/意见。
谢谢,凯文
答案 0 :(得分:0)
您可以使用熊猫的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文件中的第一行与该数据框中的列名相对应。这使得在熊猫中处理数据框更加容易,因此受到鼓励。其次,我看到使用index_col=0
参数可以将国家/地区名称用作数据框中的索引。在这种情况下,您应该选择在index
函数上使用loc
,如下所示:
df.index[df['Gold'] == df['Gold'].max()][0]
答案 1 :(得分: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()
答案 2 :(得分:0)
函数argmax()返回数据帧中最大元素的索引。
return df['Gold'].argmax()