2013-11-21 6 views
10

मेरे पास 2 कॉलम पता और आईडी वाला डेटाफ्रेम है। मैं एक शब्दकोश में एक ही पते के साथ आईडी मर्ज करना चाहते हैंपायथन पांडा डेटाफ्रेम को कई मानों के साथ शब्दकोश में कनवर्ट करें

import pandas as pd, numpy as np 

df = pd.DataFrame({'Address' : ['12 A', '66 C', '10 B', '10 B', '12 A', '12 A'], 
       'ID' : ['Aa', 'Bb', 'Cc', 'Dd', 'Ee', 'Ff']}) 
AS=df.set_index('Address')['ID'].to_dict() 

print df 

    Address ID 
0 12 A Aa 
1 66 C Bb 
2 10 B Cc 
3 10 B Dd 
4 12 A Ee 
5 12 A Ff 

print AS 

{'66 C': 'Bb', '12 A': 'Ff', '10 B': 'Dd'} 

क्या मैं चाहता हूँ डुप्लिकेट की तरह एक से अधिक मान स्टोर करने के लिए के लिए है: यहाँ

{'66 C': ['Bb'], '12 A': ['Aa','Ee','Ff'], '10 B': ['Cc','Dd']} 

उत्तर

14

मुझे लगता है कि आप groupby उपयोग कर सकते हैं और एक शब्दकोश समझ :

>>> df 
    Address ID 
0 12 A Aa 
1 66 C Bb 
2 10 B Cc 
3 10 B Dd 
4 12 A Ee 
5 12 A Ff 
>>> {k: list(v) for k,v in df.groupby("Address")["ID"]} 
{'66 C': ['Bb'], '12 A': ['Aa', 'Ee', 'Ff'], '10 B': ['Cc', 'Dd']} 
+0

धन्यवाद सिर्फ मुझे क्या चाहिए – user2872701

+1

मेरे पास एकाधिक कॉलम क्या हैं, मुझे df.groupby ('Adress') ['ID', 'XX'] चाहिए? – user815408

0

एकाधिक स्तंभों के बारे में टिप्पणी के जवाब में:

>>> df 
    Address ID Name 
0 12 A Aa Alpha 
1 66 C Bb Bravo 
2 10 B Cc Charlie 
3 10 B Dd Delta 
4 12 A Ee Edgar 
5 12 A Ff Frank 
>>> {k: v.to_dict() for k,v in df.groupby("Address")} 
संबंधित मुद्दे