【问题标题】:Sort CSV file by count on column values按列值对 CSV 文件进行排序
【发布时间】:2021-09-04 09:25:24
【问题描述】:

我可以知道如何按某个列而不是按列中的值对 csv 文件进行排序,而是应该首先(或最后)出现具有最多相同值的行数。

是否可以使用 csv 包或 pandas 来做到这一点。如果我能同时看到两者,那就太好了。

我希望我以一种可以理解的方式描述了这个问题

【问题讨论】:

  • 您可以这样做,您需要首先获取每个值的计数,从那里您可以根据计数为该值分配参考索引,然后您可以将该索引添加为新列到数据框,最后对那些新添加的列上的值进行排序,最后删除那些添加的列。
  • 您问题中的一个有效示例会有所帮助

标签: python pandas csv sorting


【解决方案1】:

使用 pandas,您可以结合使用 sort_values()key 参数和有效计算频率的 lambda 函数。

import numpy as np
df = pd.DataFrame({"col":np.random.choice(list("abcd"),20,p=(.46,.46,.04,.04))})
df.sort_values("col", key=lambda s: s.groupby(s).transform("size"))

输出

col
0 c
2 d
1 a
16 a
5 a
15 a
8 a
13 a
11 a
17 b
14 b
12 b
9 b
18 b
7 b
6 b
4 b
3 b
10 b
19 b

【讨论】:

    猜你喜欢
    • 2015-12-24
    • 2011-01-07
    • 2019-08-23
    • 2012-08-09
    • 1970-01-01
    • 2020-05-17
    • 2015-10-29
    • 1970-01-01
    相关资源
    最近更新 更多