以下是我的数据帧的前五行:
City Edition NOC Medal
Athens 1896 HUN Gold
Athens 1896 AUT Silver
Athens 1896 GRE Bronze
Athens 1896 GRE Gold
Athens 1896 GRE Silver
我想创建一个新表,该表将按NOC
分组,其他两列将为Average Before 1996
,另一列将根据Edition
列为Average After 1996
。它看起来像这样(所有值都是占位符):
NOC Average Before 1996 Average After 1996
USA 30 40
URS 25 30
GBR 50 20
我的困难在于我可以为每个国家创建一个总数:
total_medal_count = olympics_df.groupby('NOC')\
.Medal.count()\
.reset_index(name="Medal_Count")\
.sort_values("Medal_Count", ascending=False)
NOC Medal_Count
USA 4334
URS 2049
GBR 1594
但是,我无法获得Edition
列中特定值的平均值
我尝试了以下方法:
total_medal_count['Before 1996'] = np.mean(total_medal_count.Medal_Count).where(olympics_df['Edition'] < 1996)
但这不起作用,因为我无法从均值中提取where
。在np.mean
函数中引用一个数据帧,在where
函数中引用另一个数据帧,我可能也会遇到问题
您可以使用} )的函数一起使用,并为每个
gt
运算符将数据帧拆分为所需的年份。创建一个新的数据帧,将所有唯一的NOC
值作为索引,这样,下一步中任何不存在的值都将被考虑在内。对分割数据帧的每个部分使用groupby
。然后,将apply
与计算Edition
的唯一值(^{NOC
平均这些值输入sample.csv
dr
这就是你需要的吗
观察:我在测试中添加了一行(第二行)
相关问题 更多 >
编程相关推荐