按行总和对矩阵进行排序(最好是 bash 或 python)

Dan*_*ris 1 python sorting bash sum matrix

我有一个样式的二进制 tsv 矩阵:

name product 141 142 143 144 145 146 147 
n1   p1      0   0    0   0   0   1   1 
n2   p2      1   1    1   1   1   1   0
n3   p3      1   0    1   1   0   1   1
Run Code Online (Sandbox Code Playgroud)

如何按行总和降序对这个矩阵进行排序?(从第 2 行开始,第三列到最后一列的总和)请询问您是否需要更多详细信息或想要示例文件。

Ale*_*der 7

您可以使用熊猫。

import pandas as pd

file_name = "..."
df = pd.read_csv(file_name)

df = (df.set_index(['name', 'product'])  # Use `name` and `product` as index.
        .assign(sum=df.sum(axis=1))  # Add temporary 'sum' column to sum rows.
        .sort_values(by='sum', ascending=False)  # Sort by row sum descending order.
        .iloc[:, :-1])  # Remove temporary `sum` column.

>>> df
              141  142  143  144  145  146  147
name product                                   
n1   p1         0    0    0    0    0    1    1
n2   p2         1    1    1    1    1    1    0
n3   p3         1    0    1    1    0    1    1
Run Code Online (Sandbox Code Playgroud)