[英]Group by client_id and count belonging events in Python
我是 Python 新手,正在處理我有這樣一個數據集的情況:
client_id event_name
123 event_1
1234 event_1
123 event_2
12 event_1
123 event_1
我想調整我的數據集,以便為每個客戶端計算事件,如下所示:
client_id event_1 event_2
123 2 1
1234 1 0
12 1 0
我的目標與本主題類似,但我的事件在同一列(event_name)中,需要拆分為不同的列(event_1、event_2 等)。
我已經為此苦苦掙扎了一天,我認為 Python 可能有一個我目前看不到的簡單解決方案。 如果有人可以幫助我,那就太好了!
請按client-id、每個事件的count_values和unstack 分組。
data.groupby('client_id')['event_name'].value_counts().unstack().reset_index(drop=False)
如果df
數據框如下所示:
>>> df = pd.DataFrame({'client_id': [123, 1234, 123, 12, 123], 'event_name': ['event_1', 'event_1', 'event_2', 'event_1', 'event_1']})
>>> print(df)
client_id event_name
0 123 event_1
1 1234 event_1
2 123 event_2
3 12 event_1
4 123 event_1
您可以使用pandas.pivot_table()
如下。
>>> df.pivot_table(index='client_id', columns='event_name', aggfunc=len, fill_value=0)
event_name event_1 event_2
client_id
12 1 0
123 2 1
1234 1 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.