我有一份清单:
citylist = ['New York', 'San Francisco', 'Los Angeles', 'Chicago', 'Miami']
以及具有这些值的数据帧df1
first last city email duration
John Travis New York a@email.com 5.5
Jim Perterson San Francisco, Los Angeles b@email.com 6.8
Nancy Travis Chicago b1@email.com 1.2
Jake Templeton Los Angeles b3@email.com 4.9
John Myers New York b4@email.com 1.9
Peter Johnson San Francisco, Chicago b5@email.col 2.3
Aby Peters Los Angeles b6@email.com 1.8
Amy Thomas San Francisco b7@email.col 8.8
Jessica Thompson Los Angeles, Chicago, New York b8@email.com 4.2
我想计算citylist中的每个城市在数据框列“city”中出现的次数(这一部分可以正常工作,感谢@scott boston for answer在我前面的问题中)
(df1['city'].str.split(', ')
.explode()
.value_counts(sort=False)
.reindex(citylist, fill_value=0))
此外,我希望按“工期”列和按城市分组求和,并计算百分比(组工期总和)/(总工期)
city list duration %time
New York 3 11.6 0.31
San Francisco 3 17.9 0.47
Los Angeles 4 17.7 0.47
Chicago 3 7.7 0.20
Miami 0 0 0
city
列上分解数据帧city
分组,并使用.agg
进行一些计算李>%time
,您可以在开头创建一个变量var
,该变量获取duration
列的总和,稍后将使用该变量获取总数的百分比李>citylist
中不在数据框中的城市行:解决方案#2:根据@ScottBoston的评论,使用
reindex
比列表理解更简洁、更好。你也可以在他的回答中看到这一点here)输出:
相关问题 更多 >
编程相关推荐