2017-05-06 69 views
1

我可以成功地填補我的新列組數,但我懷疑還有一個更簡單的方法:熊貓:我如何獲得一組填充組中每一行的組數?

# How do I simplify this? 

def f(gr): 

    return pd.Series([gr['class_name'].count()] * gr.shape[0], index=gr.index) 

df['class_size'] = df.groupby("class_name").apply(f).reset_index(level=0, drop=True) 
column_list = ['class_name', 'class_size'] 
df[column_list].head(5) 

獲取:

This is just the first few rows of data - see how the same class name has the same class count?

回答

1

我想你需要transform

df['class_size'] = df.groupby('class_name')['class_name'].transform('size') 

或者:

df['class_size'] = df.groupby('class_name')['class_name'].transform('count') 

What is the difference between size and count in pandas?

+0

偉大工程 - 感謝名單! –

+0

很高興可以幫助,也增加了大小和數量之間的差異來回答。美好的一天! – jezrael

0

根據您的數據框形狀也可以做對進行分組的計數:

import pandas as pd 
df = pd.DataFrame({'class names':list('abracadabra'),'class count':1}) 
df.groupby('class names').count().reset_index()