gpt4 book ai didi

python - 映射两个数据框以创建一个具有多个键值的字典 - Pandas

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:52 25 4
gpt4 key购买 nike

我想创建一个具有多个键值的字典

我有以下 DataFrame df1,如下所示:

    ID       SUM       COUNT
2 3002 256401.0 15
1 3021 5412.49 21
4 3022 45454.12 12
3 3025 15487.23 45
5 3026 154876.1 88

我想将 ID 映射到大查找表,以便为每个 ID 获取多个值。我的另一个查找表 df2 看起来像这样,

    ID      Var1    Var2    Var3    Var4
0 3021 Cfd45 shkjs shkjs 465
1 3021 sfs None fjslk 323
2 3021 hjfks shka fsad 457
3 3022 None skank vssf 236
4 3022 sdkj vbjajl bbf 124
5 3025 klgf vcbj jgjg 895
6 3026 tuo None gdsfs 457
7 3026 klo ahk None 569
8 3026 nbjd alkdjl sfsfs 124

现在,我想按 ID 映射这两个 DataFrame,并创建一个字典,该字典具有唯一 ID 和来自 df2var1var2< 的多个值var3 列,

{3021: ['Cfd45', 'shkjs', 'sfs', 'jkdg', 'fjslk', 'hjfks', 'shka', 'fsad'],
3022: ['skank', 'vssf', 'sdkj', vbjajl', 'bbf'],
3025: ...}

这些值可以位于列表或元组中。

对于我的场景,我能找到的最接近的是这个 post 。但是,当我映射到表时,我需要来自多个列的值。我该如何继续?任何想法,将不胜感激。

最佳答案

让我们在 df2 上尝试一下:

df2.set_index('ID')[['Var1','Var2','Var3']].stack().groupby(level=0).apply(lambda x: x.unique()).to_dict()

输出:

    {3021: array(['Cfd45', 'shkjs', 'sfs', 'None', 'fjslk', 'hjfks', 'shka', 'fsad'], dtype=object),
3022: array(['None', 'skank', 'vssf', 'sdkj', 'vbjajl', 'bbf'], dtype=object),
3025: array(['klgf', 'vcbj', 'jgjg'], dtype=object),
3026: array(['tuo', 'None', 'gdsfs', 'klo', 'ahk', 'nbjd', 'alkdjl', 'sfsfs'], dtype=object)}

或者

df2.set_index('ID')[['Var1','Var2','Var3']].stack().groupby(level=0).apply(lambda x: x.unique()).to_json()

输出:

'{"3021":["Cfd45","shkjs","sfs","None","fjslk","hjfks","shka","fsad"],"3022":["None","skank","vssf","sdkj","vbjajl","bbf"],"3025":["klgf","vcbj","jgjg"],"3026":["tuo","None","gdsfs","klo","ahk","nbjd","alkdjl","sfsfs"]}'

关于python - 映射两个数据框以创建一个具有多个键值的字典 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46623452/

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