我想找出2022年2月1日使用率最高的地点。
数据
ID location total marks_free marks_utilized date
1 NY 6 5 1 2/1/2022
2 NY 10 5 5 2/1/2022
3 NY 2 1 1 2/1/2022
4 CA 5 4 1 2/1/2022
5 CA 6 5 1 2/1/2022
6 CA 10 10 0 2/1/2022
7 NY 6 6 0 3/1/2022
8 NY 10 10 0 3/1/2022
9 NY 2 1 1 3/1/2022
10 CA 5 4 1 3/1/2022
11 CA 6 5 1 3/1/2022
12 CA 10 10 0 3/1/2022
所需
location marks_utilized date
NY 38% 2/1/2022
逻辑
filter to 2/1/2022, groupby location
for instance lets take NY
sum(marks_utilized) / sum(total) * 100
7/18 *100 = 38%
做
# filter to 2/1/2022
df1 = df.groupby(['location', 'date']).agg({'marks_utilized': 'sum', 'total': 'sum'})
df1['marks_utilized'] = df['marks_utilized'] / df['total'] * 100
还在研究这个。任何建议都很感激。
2条答案
按热度按时间myss37ts1#
只需要对您尝试进行简单的修改,它就会工作。
df1['marks_utilized'] = df['marks_utilized'] / df['total'] * 100
应该是df1['marks_utilized'] = df1['marks_utilized'] / df1['total'] * 100
如果你只想得到
2/1/2022
的结果,你可以过滤df
,然后再执行groupby
。同样,你可以使用df1.to_string(formatters={'marks_utilized': '{:,.2f}'.format}
将float
化为百分比字符串。第一个
jvidinwx2#
我们可以试试