将列排序到数据框中的其他列

时间:2016-02-29 07:27:21

标签: python numpy pandas

$txt = 'file content';
$this->load->helper('download');
force_download('File ' . date('Y-m-d H:i:s') . '.txt', $txt);

如果我有一个带有如上图所示的axix的数据框,我该如何为每一行水平而不是垂直地执行DataFrame.rank。

我想在df的末尾创建一个名为 A_Bid A_Ask B_Bid B_Ask C_Bid C_Ask D_Bid D_Ask .. rank_bid 0 120.12 120.15 120.13 120.16 120.14 120.15 120.12 120.15 3 1 8.55 8.65 8.45 8.75 8.53 8.64 8.50 8.60 1 的列,并针对'rank_bid'找到'A_Bid'排名等等...我还想对{{{I}进行排名1}}但使用最小值作为排名最高的。

1 个答案:

答案 0 :(得分:1)

IIUC您可以filter将您的df改为“出价”列,并使用axis=1method='dense'ascending=False上致电rank

In [91]:
df['rank_bid'] = df.filter(like='Bid').rank(method='dense',axis=1, ascending=False)['A_Bid']
df

Out[91]:
    A_Bid   A_Ask   B_Bid   B_Ask   C_Bid   C_Ask   D_Bid   D_Ask  rank_bid
0  120.12  120.15  120.13  120.16  120.14  120.15  120.12  120.15     3
1    8.55    8.65    8.45    8.75    8.53    8.64    8.50    8.60     1

以下是rank方法的输出:

In [92]:
df.filter(like='Bid').rank(method='dense',axis=1, ascending=False)

Out[92]:
   A_Bid  B_Bid  C_Bid  D_Bid
0      3      2      1      3
1      1      4      2      3