数据框中的转移矩阵未传递值

2 投票
1 回答
548 浏览
提问于 2025-04-18 07:50

我正在尝试实现一个转移矩阵。

我的数据和转移矩阵都是用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 个回答

1

好的,第一个问题,也是解决你问题的关键在于,你创建的 states_mat 数据框时,默认值设为了 None,这会变成 numpy.NaN

你不能把一个整数加到 NaN 上:

In [24]:

NaN + 1
Out[24]:
nan

所以你需要把数据框的构建方式改成:

states_mat = pd.DataFrame(0, index=range(0,24), columns=range(0,24))

在这种情况下,使用子索引应该是没问题的,但你也可以用 loc,这样也能正常工作:

states_mat.loc[curr, prev] += 1

撰写回答