python - 如何按列值的计数进行分组并对其进行排序?

标签 python pandas sorting count group-by

如何按列值的计数进行分组并对其进行排序?

我是一名 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

What is the difference between size and count in pandas?

关于python - 如何按列值的计数进行分组并对其进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44993062/

相关文章:

Python字符串转换,去掉空格,加连字符

python - 排序和过滤列表

python - 如何保持键/值与声明的顺序相同?

Python - 使用变量作为列表名称

php - Python 密码学 : Cannot sign with RSA private key using PKCS1v15 padding

python - 为什么我的 Pytorch 张量大小会在一些批处理后发生变化并包含 NaN?

python - 如何将数据集拆分为训练集和验证集并保持类之间的比例?

python - 尝试获取 WLST 中的集群名称

python - 我们可以从 AWS S3 复制图像并将其写入 excel 文件(S3)而不使用 Python 在本地存储数据吗?

android - 如何对kotlin中的对象列表进行排序?