【问题标题】:Sorting other columns based on specified column根据指定列对其他列进行排序
【发布时间】:2018-07-12 23:52:54
【问题描述】:

我有一个 .dat 文件,其中包含由空格分隔的三列 [示例如下所示,但在我的情况下没有列名],我需要根据相位列对其他列进行排序,该列从最少排序到最大。

例如,

Time    Phase    Mag 
t1      0.1      m1 
t2      0.0      m2
t3      0.2      m3
t4      0.4      m4
t5      0.3      m5

然后像这样对三列进行排序:

t2      0.0       m2
t1      0.1       m1 
t3      0.2       m3
t5      0.3       m5
t4      0.4       m4

我找到了 2 列数据的示例 2 column sorting example,但它不适用于 3 列。有人可以帮我弄这个吗?

【问题讨论】:

标签: python sorting multiple-columns columnsorting


【解决方案1】:

我已将以下内容保存到名为example.dat的文件中

Time    Phase    Mag 
t1      0.1      m1 
t2      0.0      m2
t3      0.2      m3
t4      0.4      m4
t5      0.3      m5

下面的代码应该可以完成这项工作。

import pandas as pd

df = pd.read_csv("example.dat",delim_whitespace=True) # read the file with whitespaces as the delimiter
df.sort_values("Phase") # sort on the column "Phase"

输出:

    Time Phase  Mag
1   t2   0.0    m2
0   t1   0.1    m1
2   t3   0.2    m3
4   t5   0.3    m5
3   t4   0.4    m4

【讨论】:

  • 谢谢!这很有帮助。我还发现文件开头有一个额外的空间导致了keyerror,所以我使用了这个:df = pd.read_csv('filename.dat', delim_whitespace=True, encoding="utf-8-sig") df.sort_values("PHASE")
  • 太棒了!如果有帮助,请接受/支持答案。
  • 我做到了,但由于我是新成员,因此在我获得更高的“声誉”之前不会显示。
最近更新 更多