2016-07-04 70 views
2

我正在寻找解决方案,以解决以下问题。我有一个与熊猫一起阅读的Excel文件。列A包含一个标识符和B列中还含有Identiers,但在B列的标识符与标识符相关联列A例如:Python中的LinkedList

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

在Java中,我会使用链接列表。我应该在Python中使用什么?

谢谢!

+0

不能确定你想达到什么样的这里。你可以再详细一点吗?也许举一个你使用的Java代码的例子,这里的人可以在Python中找到一个等价的东西? –

+0

你可以在Python中创建一个LinkedList。然而,在我看来,字典似乎是最自然的方式。 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))