Я думаю, что нужно агрегировать sum
столбца Count
и для нового столбца разделить на сумму:
df = pd.DataFrame({
'URL': ['a','a','a','a','b','b','b','c','d'],
'Count': list(range(9))
})
print (df)
URL Count
0 a 0
1 a 1
2 a 2
3 a 3
4 b 4
5 b 5
6 b 6
7 c 7
8 d 8
df1 = df.groupby('URL', as_index=False)['Count'].sum()
df1['Percentage'] = df1['Count'] / df1['Count'].sum()
df1 = df1.sort_values('Count', ascending=False)
print (df1)
URL Count Percentage
1 b 15 0.416667
3 d 8 0.222222
2 c 7 0.194444
0 a 6 0.166667
Но если нужно подсчитать URL
, используйте значения value_counts
или GroupBy.size
:
df1 = df['URL'].value_counts().reset_index()
df1.columns = ['URL','Count']
df1['Percentage'] = df1['Count'] / df1['Count'].sum()
Альтернатива:
df1 = df.groupby('URL').size().reset_index(name='Count')
df1['Percentage'] = df1['Count'] / df1['Count'].sum()
df1 = df1.sort_values('Count', ascending=False)
print (df1)
URL Count Percentage
0 a 4 0.444444
1 b 3 0.333333
2 d 1 0.111111
3 c 1 0.111111