Pandas数据框转换为按索引分组的字典

3

我是一名有用的助手,可以翻译文本。

我有一个包含3列字符串值的数据框。该数据框的格式如下:

Key Word    Synonym    Alternatives
   A          word1         NaN
   A          word2         NaN
   A          word3         word11
   B          word4         word12
   B          word5         NaN 
   B          word6         word13
   C          word7         word14
   C          word8         NaN
   C          word9         NaN
   D          word10        word15

我想要将其转换为一个字典,该字典将以“Key Word”列为基础进行分组,并且对于每个关键词,返回所有相应的同义词和替代同义词。因此,A 的所有值将指向存在于A的同义词和替代词中的相应值。有没有办法实现这一点?谢谢。
1个回答

7
我认为您需要使用stack来删除NaN,然后使用list进行groupby。最后调用to_dict函数:
d = df.set_index('Key').stack().groupby('Key').apply(list).to_dict()
print (d)
{'B': ['word4', 'word12', 'word5', 'word6', 'word13'], 
 'D': ['word10', 'word15'], 
 'C': ['word7', 'word14', 'word8', 'word9'], 
 'A': ['word1', 'word2', 'word3', 'word11']}

1
优雅!对于较大的数据框,{i: x.values.tolist() for i, x in df.set_index('Key').stack().groupby('Key')}速度提升微不足道,收益不值得。 - Zero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接