数据帧中的转换矩阵未传递值

时间:2014-05-28 15:27:29

标签: python matrix pandas

我正在尝试实现转换矩阵。

数据和转换矩阵都使用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作为我的数据,因为我想使用组功能来分割数据并应用上述功能。有什么建议?

1 个答案:

答案 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