don*_*lan 5 python numpy pandas
我正在为学习者离散化我的系列。我真的需要这个系列是浮动的,我真的需要避免 for 循环。
如何将这个系列从 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)
Run Code Online (Sandbox Code Playgroud)
这是导致函数失败的行:
s = int((s[:] - s[:] % bucket_size)/bucket_size)
Run Code Online (Sandbox Code Playgroud)
int() 会导致转换错误:我无法将 pandas 系列转换为 int 系列。
return s
Run Code Online (Sandbox Code Playgroud)
如果我删除 int(),该函数就可以工作,所以我可能只是看看我是否可以让它工作。
And*_*eak 13
常规 pythonint函数仅适用于标量。您应该使用 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
Run Code Online (Sandbox Code Playgroud)
如果您确实想转换为整数类型,请使用
s = s.astype(int)
Run Code Online (Sandbox Code Playgroud)
投射你的数组。