我正在尝试实现转换矩阵。
数据和转换矩阵都在使用 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,因为我想使用组函数来拆分数据并应用上述函数。有什么建议么?
最佳答案
好的,所以第一个问题和解决您问题的问题是您创建了默认值为 None
的 states_mat
数据框,它变成了一个 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
关于python - Dataframe 中的转换矩阵未传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23915835/