gpt4 book ai didi

python - 将数据帧转换为字典,忽略某些值

转载 作者:行者123 更新时间:2023-12-01 06:26:09 25 4
gpt4 key购买 nike

我需要帮助将数据帧转换为字典,如下所示,其中 id 是主键,内部字典的值应大于 0:

给定数据框:

id  score1  score2 score3  score4     score5
1 0.0000 0.1087 0.0000 0.0786 1
2 0.0532 0.3083 0.2864 0.4464 1
3 0.0000 0.0840 0.8090 0.2331 1

预期的解决方案:

[1:{'score2': 0.10865899999999999,
'score4': 0.078597,
'score5': 1.0},
2:{'score1': 0.053238000000000001,
'score2': 0.308253,
'score3': 0.28635300000000002,
'score4': 0.44643299999999997,
'score5': 1.0},
3:{'score2': 0.083978999999999998,
'score3': 0.80898300000000001,
'score4': 0.23305200000000001,
'score5': 1.0}]

我的解决方案:我正在使用df.to_dict(orient='records')给出以下解决方案:

[{'id': 1.0,
'score1': 0.0,
'score2': 0.10865899999999999,
'score3': 0.0,
'score4': 0.078597,
'score5': 1.0},
{'id': 2.0,
'score1': 0.053238000000000001,
'score2': 0.308253,
'score3': 0.28635300000000002,
'score4': 0.44643299999999997,
'score5': 1.0},
{'id': 3.0,
'score1': 0.0,
'score2': 0.083978999999999998,
'score3': 0.80898300000000001,
'score4': 0.23305200000000001,
'score5': 1.0}]

最佳答案

我假设您的预期输出是字典的字典,您可以使用

df.set_index('id').agg(lambda x: x[x != 0].to_dict(), axis=1).to_dict()

{1: {'score2': 0.1087, 'score4': 0.0786, 'score5': 1.0},
2: {'score1': 0.0532,
'score2': 0.3083,
'score3': 0.2864,
'score4': 0.4464,
'score5': 1.0},
3: {'score2': 0.084, 'score3': 0.809, 'score4': 0.2331, 'score5': 1.0}}
<小时/>

详细信息

将ID设置为索引,因此它成为输出字典中的键:

df.set_index('id')

score1 score2 score3 score4 score5
id
1 0.0000 0.1087 0.0000 0.0786 1
2 0.0532 0.3083 0.2864 0.4464 1
3 0.0000 0.0840 0.8090 0.2331 1

接下来,将每一行转换为字典,删除值等于 0 的列:

_.agg(lambda x: x[x != 0].to_dict(), axis=1)

id
1 {'score2': 0.1087, 'score4': 0.0786, 'score5':...
2 {'score1': 0.0532, 'score2': 0.3083, 'score3':...
3 {'score2': 0.084, 'score3': 0.809, 'score4': 0...
dtype: object

最后一步是将其转换为字典的字典:

_.to_dict()

{1: {'score2': 0.1087, 'score4': 0.0786, 'score5': 1.0},
2: {'score1': 0.0532,
'score2': 0.3083,
'score3': 0.2864,
'score4': 0.4464,
'score5': 1.0},
3: {'score2': 0.084, 'score3': 0.809, 'score4': 0.2331, 'score5': 1.0}}

关于python - 将数据帧转换为字典,忽略某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60133652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com