如何按列值的计数进行分组并对其进行排序?
我是一名 pandas 学习者。
我有一个名为 data.log 的原始数据框。现在我想统计按“c-ip-1”分组的数字,并对结果进行排序。
原始数据.log:
sc-status sc-substatus sc-win32-status time-taken c-ip-1
0 200 0 0 986 31.7.188.55
1 200 0 0 2539 31.7.188.55
2 200 0 0 1172 31.7.188.56
3 200 0 0 3152 31.7.188.80
4 200 0 0 1091 31.7.188.80
...
99 200 0 0 1115 31.9.200.60
100 200 0 0 2000 31.9.200.61
预期结果如下:
c-ip-1 count
0 31.7.188.56 1
1 31.9.200.61 1
2 31.7.188.55 2
...
34 31.9.200.60 5
我尝试编写Python代码并运行它,但失败了:
import pandas as pd
df = pd.read_table('data.log', sep=" ")
print(df[['c-ip-1']].groupby(['c-ip-1']).agg(['count'])
如何使用python解决这个问题?
最佳答案
我认为你需要通过 GroupBy.size
进行聚合,然后 Series.sort_values
最后Series.reset_index
:
#better is more general separator `\s+` - one or more whitespaces
df = pd.read_table('data.log', sep="\s+")
df1 = df.groupby('c-ip-1').size().sort_values().reset_index(name='count')
print (df1)
c-ip-1 count
0 31.7.188.56 1
1 31.9.200.60 1
2 31.9.200.61 1
3 31.7.188.55 2
4 31.7.188.80 2
关于python - 如何按列值的计数进行分组并对其进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44993062/