Python将添加具有相对顺序号的列

Python将添加具有相对顺序号的列,python,pandas,data-analysis,Python,Pandas,Data Analysis,如何将订单号列添加到现有数据帧 这是我的数据帧: import pandas as pd import math frame = pd.DataFrame([[1, 4, 2], [8, 9, 2], [10, 2, 1]], columns=['a', 'b', 'c']) def add_stats(row): row['sum'] = sum([row['a'], row['b'], row['c']]) row['sum_sq'] = sum(math.pow(v, 2

如何将订单号列添加到现有数据帧

这是我的数据帧:

import pandas as pd
import math
frame = pd.DataFrame([[1, 4, 2], [8, 9, 2], [10, 2, 1]], columns=['a', 'b', 'c'])

def add_stats(row):
    row['sum'] = sum([row['a'], row['b'], row['c']])
    row['sum_sq'] = sum(math.pow(v, 2) for v in [row['a'], row['b'], row['c']])
    row['max'] = max(row['a'], row['b'], row['c'])
    return row

frame = frame.apply(add_stats, axis=1)
print(frame.head())
结果数据为:

    a  b  c  sum  sum_sq  max
0   1  4  2    7      21    4
1   8  9  2   19     149    9
2  10  2  1   13     105   10

首先,我想添加3个额外的列,分别带有顺序号、按和排序、按平方和最大排序。接下来,这3列应该合并成一列-订单号的平均值-但我知道如何做这部分(应用和轴=1)。

我想您正在寻找
排序
的位置。根据您的示例,添加:

frame['sum_order'] = frame['sum'].rank()
frame['sum_sq_order'] = frame['sum_sq'].rank()
frame['max_order'] = frame['max'].rank()

frame['mean_order'] = frame[['sum_order', 'sum_sq_order', 'max_order']].mean(axis=1)
要获得:

    a  b  c  sum  sum_sq  max  sum_order  sum_sq_order  max_order  mean_order
0   1  4  2    7      21    4          1             1          1    1.000000
1   8  9  2   19     149    9          3             3          2    2.666667
2  10  2  1   13     105   10          2             2          3    2.333333
rank方法也有一些选项,例如在相同或NA值的情况下指定行为