有没有办法将列的值从非连续数转换为1连续数?

时间:2016-06-22 04:35:59

标签: pandas

例如,有一个像这样的pandax.DataFrame:

          col_1     col_2
idx_1     493       47
idx_2     229       46435
idx_3     998       56
idx_4     209       45
idx_3     998       56

我希望找到一个易于转换为

的内容
          col_1     col_2
idx_1     3         2
idx_2     2         4
idx_3     4         3
idx_4     1         1
idx_3     4         3

正如您所看到的,在每一列中,始终将最小值转换为1,然后将第二小值转换为2,依此类推第四,任何简单的方法来完成此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用rank

df.rank(method="dense")
Out[8]: 
       col_1  col_2
idx_1    3.0    2.0
idx_2    2.0    4.0
idx_3    4.0    3.0
idx_4    1.0    1.0
idx_3    4.0    3.0

由于原始值是float类型,因此行列也是浮点数。如果您愿意,可以致电astype(int)

df.rank(method="dense").astype(int)
Out[9]: 
       col_1  col_2
idx_1      3      2
idx_2      2      4
idx_3      4      3
idx_4      1      1
idx_3      4      3