2016-07-04 3 views
2

다음 문제에 대한 해결책을 찾고 있습니다. 나는 판다와 함께 읽은 엑셀 파일을 가지고있다. 열 A는 식별자 및 열 B는 Identiers이 포함되어 포함되어 있지만 열 B의 식별자는 열 A. 예에서 식별자에 연결되어 있습니다 :LinkedList in Python

+----------+----------+ | Column A | Column B | +----------+----------+ | ID1 | ID5 | +----------+----------+ | ID1 | ID6 | +----------+----------+ | ID1 | ID7 | +----------+----------+ | ID2 | ID8 | +----------+----------+ | ID2 | ID9 | +----------+----------+ | ID3 | ID8 | +----------+----------+ | ID3 | ID9 | +----------+----------+ | ID3 | ID10 | +----------+----------+ | ID3 | ID11 | +----------+----------+

을 그래서 지금은 ID1은 ID5, ID6에 연결해야 할 및 ID7. ID2는 ID8, ID9 등과 연결된

자바에서는 링크드 목록을 사용합니다. 파이썬에서 무엇을 사용해야합니까?

감사합니다.

+0

회원님이 달성하기 위해 노력하고 정말로 확인 이리. 당신은 더 구체적 일 수 있습니까? 아마도 당신이 사용하고자하는 Java 코드의 예를 들자면, 여기 사람들은 파이썬에서 동등한 것을 찾을 수있을 것입니다. –

+0

당신은 파이썬으로 LinkedList를 만들 수 있습니다. 그러나 dict 내 생각에 그것을 가장 자연스러운 방법으로 보인다. 파이썬에는 내장 된 지원 기능이 있습니다. Look up them – Shalan

+0

이것은 자바 나 다른 언어로 링크 된 목록이 아닙니다. 매핑 인 것 같습니다. –

답변

2

아마 defaultdict가 설정 되었습니까? 당신이 읽을 팬더를 사용하고 있기 때문에

from collections import defaultdict 
ident_pair_dict = defaultdict(set) 

for ind, row in df.iterrows(): # df is the pandas dataframe you read 
    ident_pair_dict[row['Column A']].add(row['Column B']) 
2

, 당신은 팬더 방법과 사전을 만들 수 있습니다 :

df.groupby('Column A')['Column B'].agg(lambda x: list(x)).to_dict() 
Out[42]: 
{'ID1': ['ID5', 'ID6', 'ID7'], 
'ID2': ['ID8', 'ID9'], 
'ID3': ['ID8', 'ID9', 'ID10', 'ID11']} 
0

보십시오이 :

dict(df.groupby('Column A')['Column B'].apply(list))