2016-07-04 10 views
2

私は以下の問題の解決策を探しています。私はPandasで読んだExcelファイルを持っています。列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。 ID8、ID9などにリンクされたID2

Javaではリンクリストを使用します。 Pythonで何を使うべきですか?

ありがとうございます!

+0

本当にわかりませんここに。より具体的になりますか?おそらく、使用するJavaコードの例を挙げてください。ここの人々はPythonで同等のものを見つけることができますか? –

+0

あなたはPythonでLinkedListを作ることができます。しかし、dictは私の意見でそれを行う最も自然な方法のように思えます。 Pythonには組み込みのサポートがあります。それらを見てください – Shalan

+0

これはJavaや他の言語でリンクされたリストではありません。マッピングと思われる。 –

答えて

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