如何将Pandas中的非零条目转换为带有列表的dict?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Pandas中的非零条目转换为带有列表的dict?相关的知识,希望对你有一定的参考价值。

假设我现在有一个面具

mask = df.DataFrame([[0, 0, 1], [1, 1, 0], [0, 0, 1]])

实际上,qazxsw poi是

mask

此外,我有一个像分数矩阵

    0  1  2
0   0  0  1
1   1  1  0
2   0  0  1

score = df.DataFrame([[0.5, 0.3, 0.2], [0.1, 0.9, 0.7], [0.5, 0.4, 0.8]])

我只想在 0 1 2 0 0.5 0.3 0.2 1 0.1 0.9 0.7 2 0.5 0.4 0.8 中保留score的条目与“true”,即结果应该是

mask

最后,我需要将结果转换为带有列表的dict

    0    1    2
0   0    0    0.2
1   0.1  0.9  0
2   0    0    0.8

我怎么能以Pythonic的方式做?谢谢!

答案

使用result = {0: {2: 0.2}, 1: {0: 0.1, 1: 0.9}, 2: {2: 0.8}} 与铸造DataFrame.where掩码布尔值:

0,1

然后转换为字典并删除嵌套字典中的print (score.where(mask.astype(bool), 0)) 0 1 2 0 0.0 0.0 0.2 1 0.1 0.9 0.0 2 0.0 0.0 0.8 值:

0

d = score.where(mask.astype(bool), 0).to_dict(orient='index') d = {k:{k1:v1 for k1, v1 in v.items() if v1 != 0} for k, v in d.items()} print (d) {0: {2: 0.2}, 1: {0: 0.1, 1: 0.9}, 2: {2: 0.8}} 重塑的另一个想法,并将不匹配的值替换为DataFrame.stack

NaN

以上是关于如何将Pandas中的非零条目转换为带有列表的dict?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 csv 字符串转换为 pandas 中的列表?

如何将 csv 字符串转换为 pandas 中的列表?

如何将 2 个列表的列表转换为 pandas 中的 2 列 df

如何将 DataFrame 中的每一行/单元格值转换为 pandas 中的字典列表?

python - 如何将带有年份的周数转换为python pandas中的日期时间格式?

将 pandas 列中的列表转换为字符串