我想创建一个dictionary
,其中包含一个键的多个值。
我有以下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且来自df2
的{{1}} var1
var2
和var3
的多个值的字典列,
{3021: ['Cfd45', 'shkjs', 'sfs', 'jkdg', 'fjslk', 'hjfks', 'shka', 'fsad'],
3022: ['skank', 'vssf', 'sdkj', vbjajl', 'bbf'],
3025: ...}
值可以在列表或元组中。
对于我的情景,我能找到的最接近的是post。但是,当我映射到表时,我想要来自多个列的值。我该如何处理?任何想法,将不胜感激。
答案 0 :(得分:1)
让我们在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)}
OR
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"]}'