用相应的“排名”替换数字:
import pandas as pd
import numpy as np
numbers = np.random.random_integers(low=0.0, high=10000.0, size=(1000,))
df = pd.DataFrame({'a': numbers})
df['a_rank'] = df['a'].rank()
我将浮点值作为rank
方法的默认输出类型:
987 82.0
988 36.5
989 526.0
990 219.0
991 957.0
992 819.5
993 787.5
994 513.0
我宁愿使用整数,而不是 float
。使用 asType(int)
对结果 float
值进行舍入会有风险,因为转换为 int
可能会引入 float 中的重复值彼此太接近的
值,例如 3.5
和 4.0
。当转换为整数时,它们都会得到整数值 4
。
有没有办法引导rank
方法输出整数?
最佳答案
上述解决方案对我来说不起作用。但以下确实有效。编辑的关键行是:
df['a_rank'] = df['a'].rank(method='dense').astype(int);
这可能是版本问题。
关于python - 如何从DataFrame的rank方法中获取整数而不是 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40249447/