2013-11-21 21 views
10

Tôi có một khung dữ liệu với 2 cột Địa chỉ và ID. Tôi muốn kết hợp ID với địa chỉ tương tự trong từ điểnpandas trăn chuyển đổi khung dữ liệu thành từ điển với nhiều giá trị

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'} 

Những gì tôi muốn là cho các bản sao để lưu trữ nhiều giá trị như:

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

Trả lời

14

Tôi nghĩ rằng bạn có thể sử dụng groupby và một sự hiểu biết từ điển ở đây :

>>> 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

Chỉ cần những gì tôi cần – user2872701

+1

Tôi có nhiều cột nào, tôi cần df.groupby ('Địa chỉ') ['ID', 'XX']? – user815408

0

để đối phó với những nhận xét về nhiều cột:

>>> 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")} 
Các vấn đề liên quan