2017-09-19 37 views
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列进行分组,并为每key_word,返回所有相应的同义词和替代同义词。所以,A的所有值将指SynonymAlternatives中等存在的相应值。有没有办法做到这一点?先谢谢你。

回答

6

我认为你需要stack下降NaN s然后groupbylist。最后通话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

是的,就是这样,非常感谢! – joasa

+1

优雅! '{i:x.values.tolist()for i,x in df.set_index('Key')。stack()。groupby('Key')}'对于较大的数据框非常快,不值得获得。 – Zero