【问题标题】:Sorting Pandas Dataframe对 Pandas 数据框进行排序
【发布时间】:2013-06-05 20:01:41
【问题描述】:

我正在分析一个 Apache 访问日志文件,并且我想查找命中计数。
下面的代码就是这样做的:

ips = df.groupby('IP').size()
ips.sort()
print ips[-10:]

但我想找到前 10 名的“Referrer”(第 9 列)ips
我该怎么做?

示例日志文件行:

112.135.128.20 - [13/May/2013:23:55:04 +0530] "GET /SVRClientWeb/ActionController HTTP/1.1" 302 2 "https://www.example.com/sample" "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329" GET /SVRClientWeb/ActionController - HTTP/1.1 www.test.com 

【问题讨论】:

    标签: pandas dataframe


    【解决方案1】:

    使用isin

    你可以先对你的ips进行排序,得到最后10个ips的索引。

    ips.sort()
    top_ips = ips.tail(10).index
    

    然后使用isin 获取您需要的推荐人:

    referrers = df[df['IP'].isin(top_ips)]['Referrer']
    

    【讨论】:

    • 使用 ips[-10:] 和 ips.head(10).index 的结果不同吗?而且在 ips.sort(ascending=False) 处也报错....TypeError: sort() 得到了一个意外的关键字参数“升序”
    • 你用的是哪个版本?
    • 熊猫:0.11.0 和 python 2.7
    • head 是获取前n行。
    • 而且pandas系列确实有sort的方法。我错过了什么吗?
    猜你喜欢
    • 2020-02-29
    • 1970-01-01
    • 2020-06-18
    • 2016-11-17
    • 1970-01-01
    • 2017-12-26
    • 2017-06-30
    • 2020-04-23
    • 1970-01-01
    相关资源
    最近更新 更多