将pandas float系列转换为int

时间:2015-12-07 23:19:02

标签: python numpy pandas

我正在为学习者离散我的系列。我真的需要系列浮动,我真的需要避免循环。

如何将此系列从float转换为int?

这是我目前失败的功能:

def discretize_series(s,count,normalized=True):
    def discretize(value,bucket_size):
        return value % bucket_size
    if normalized:
        maximum = 1.0
    else:
        minimum = np.min(s)
        s = s[:] - minimum
        maximum = np.max(s)
    bucket_size = maximum / float(count)

以下是导致函数失败的行:

    s = int((s[:] - s[:] % bucket_size)/bucket_size)

int()引发了一个转换错误:我无法将pandas系列转换为int系列。

    return s

如果我删除int(),该函数可以工作,所以我可能只是看看我是否可以让它工作。

1 个答案:

答案 0 :(得分:4)

常规python int函数仅适用于标量。您应该使用numpy函数来舍入数据

s = np.round( (s-s%bucket_size)/bucket_size ) #to round properly; or
s = np.fix( (s-s%bucket_size)/bucket_size )   #to round towards 0

如果您确实想要转换为整数类型,请使用

s = s.astype(int)

投射阵列。