[英]pandas : get a count of occurences given a list
假设我有这样的事情
user_id,service
------------------
user_1,service1
user_2,service1
user_3,service2
user_1,service2
user_3,service1
user_3,service2
我最终想拥有的是:
user_id, service1, service2
----------------------------
user_1, 1, 1
user_2, 1, 0
user_3, 1, 2
到目前为止,这是我的代码:
data = pandas.read_csv('dataset.csv')
service_by_user = data['service'].groupby(data['user_id'])
count_occurences_services = service_by_user.apply(pandas.value_counts)
所以我得到的是我的代码:
user_1 service1 1
service2 1
user_2 service1 1
service2 0
user_3 service1 1
service2 2
但是那时我不知道该怎么做。注意:我的用户和服务比本示例要多得多,并且并非所有用户都使用所有服务,实际上,在所有服务中最多使用3或4个用户。 我有一个数组,其中包含所有使用的服务:
service_by_user = data.set_index('user_id')
list_services = service_by_user.service.unique()
您可以使用pivot_table
:
data.pivot_table(index=['user_id'], columns=['service'], aggfunc='size', fill_value=0)
service service1 service2
user_id
user_1 1 1
user_2 1 0
user_3 1 2
带有一些其他格式:
data.pivot_table(index=['user_id'], columns=['service'], aggfunc='size', fill_value=0) \
.rename_axis(None, axis=1) \
.reset_index()
user_id service1 service2
0 user_1 1 1
1 user_2 1 0
2 user_3 1 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.