我正在尝试实现转换矩阵。
数据和转换矩阵都使用Pandas
在DataFrame中states_mat = pd.DataFrame(None, index=range(0,24), columns=range(0,24))
def states_update(data):
states_vec = data['hr']
# Do nothing if there is no sequence
if len(states_vec) < 2:
return
for i in xrange(1, len(states_vec)):
prev = states_vec[i-1]
curr = states_vec[i]
states_mat[curr][prev] += 1
数据采用int64类型
我没有像我想要的那样更新+1计数。我相信它是某种类型的问题,但不知道如何强制类型。我正在使用DataFrame作为我的数据,因为我想使用组功能来分割数据并应用上述功能。有什么建议?
答案 0 :(得分:1)
确定第一个问题和解决问题的问题是,您创建的states_mat
数据框的默认值为None
,后者变为numpy.NaN
。
您无法将整数添加到NaN
:
In [24]:
NaN + 1
Out[24]:
nan
因此,将DataFrame构造更改为:
states_mat = pd.DataFrame(0, index=range(0,24), columns=range(0,24))
在这种情况下,可能是子索引很好,但你可以使用loc
也可以工作:
states_mat.loc[curr, prev] += 1