【发布时间】:2021-04-26 13:01:41
【问题描述】:
众所周知,所有概率的总和都需要为 1。我确实有一个 Pandas 数据框,有时某个事件的概率确实会错过。
因为我知道一行的所有元素需要加起来为一个。我想用计算值替换 Nan。
我的 Pandas 数据框中的每一行都具有以下内容
for item, row in df:
df.replace(Nan,(1-sum of row())
作为一个例子,这里是我用来测试数据的数组:
matrixsum
e f g
a 0.3 0.2 Nan
b 0.2 0.2 0.6
c 0.7 0.1 Nan
通过使用 df.fillna(0) 我确实得到了这个:
matrixsum
e f g
a 0.3 0.2 0.0
b 0.2 0.2 0.6
c 0.7 0.1 0.0
另一个问题是,只有float 或int 格式的行可以求和为1,但nan 具有字符串格式。目前我只使用df.fillna(0),但这是一件坏事。
预期输出:
matrixsum
e f g
a 0.3 0.2 0.5
b 0.2 0.2 0.6
c 0.7 0.1 0.2
【问题讨论】:
-
您的示例数据框中的
nan在哪里?请分享一个具有预期输出的合适的。 -
感谢您的建议,我确实更改了问题并尝试实施您要求的事情。
-
如果一行包含 2 个
nan会发生什么? -
如果一行包含多个nan,则没有解决方案,并且无法修复数据。但我想减少用户必须输入的数据量。
标签: python-3.x pandas dataframe markov-chains