python - 使用 pandas 对数据进行排序 - 根据其他列中的值对第一列进行排序

标签 python python-3.x pandas sorting

我尝试使用awk、sort、sed获取以下输入数据。我觉得使用这些 UNIX 实用程序来处理它们可能太复杂了。 pandas 可能不错。

这些是对数据进行排序的条件。

  • 首先按升序对第 1 列进行排序。
  • 现在,在每个第 #1 列中,根据第 #3 列中的相同键对数据进行分组(排序顺序并不重要)。
  • 现在,仅根据第 3 列中每个组的最小值对第 2 列进行排序。

    例如:

    • 对于第 4 组(在第 3 列中),第 2 列中的最小值是 15882592,它是 << 第 5 组(在第 3 列中)的最小值 15883889;因此第 4 组应该位于第 5 组之上。

    • 同样,对于第 5 组(在第 3 列中),最小值在第 2 列中 15883889 << 第 1 组(在第 3 列中)最小值 15885010;因此第 5 组应该位于第 1 组之上。

所以,最后我必须首先对 col#1 进行分组,然后对 col#3 进行条件(分组)的 column#2。

输入数据:

2   15881989    6
2   15882091    6
2   15882148    6
2   15882328    6
2   15882364    6
2   15882451    8
2   15882454    8
2   15882493    8
2   15882592    4
2   15882601    4
2   15882607    4
2   15883765    4
2   15883782    4
2   15883783    4
2   15883785    4
2   15883861    4
2   15883862    4
2   15883889    5
2   15883894    5
2   15883904    5
2   15884457    5
2   15884525    5
2   15884546    4
2   15884550    4
2   15884582    4
2   15884613    4
2   15884649    4
2   15884742    4
2   15884965    4
2   15885010    1
2   15885024    1
2   15885061    4
2   15896126    4
3   15896174    4
3   15896152    4
3   15896128    3
3   15896224    3
3   15896258    3
3   15896406    3

预期输出:

2   15881989    6
2   15882091    6
2   15882148    6
2   15882328    6
2   15882364    6
2   15882451    8
2   15882454    8
2   15882493    8
2   15882592    4
2   15882601    4
2   15882607    4
2   15883765    4
2   15883782    4
2   15883783    4
2   15883785    4
2   15883861    4
2   15883862    4
2   15884546    4
2   15884550    4
2   15884582    4
2   15884613    4
2   15884649    4
2   15884742    4
2   15884965    4
2   15885061    4
2   15896126    4
2   15896128    4
2   15896152    4
2   15883889    5
2   15883894    5
2   15883904    5
2   15884457    5
2   15884525    5
2   15885010    1
2   15885024    1
3   15896128    3
3   15896224    3
3   15896258    3
3   15896406    3
3   15896152    4
3   15896174    4

谢谢

最佳答案

我使用 transform min 作为新 key

df.assign(New=df.groupby(['col1','col3']).col2.transform('min')).sort_values(['col1','New'])

关于python - 使用 pandas 对数据进行排序 - 根据其他列中的值对第一列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48847508/

相关文章:

python - statsmodel.SARIMAX .forecast() 方法不执行

python - 使用python替换所有换行符

python - 使用 pd.melt() 反转多索引数据帧

python - 字典联合

python - 从轮格式 : "...is not a supported wheel on this platform" 安装 numpy

python - 给定N,返回满足方程: N + M = 2 * (N XOR M)的M

python-3.x - 在 Windows 上使用 Popen (python) 的 ffmpeg

python-3.x - 正则表达式在磅符号之后捕获数字 - 用逗号和在未捕获的空格之后的数量

python - 如何将日期格式字符串转换为 bool True 并将其他格式转换为 False?

python - 根据条件在行之间的 Pandas 中分组