Python - 按列的唯一值分组并将df转置为列表

时间:2017-10-27 19:06:39

标签: python pandas dataframe unique transpose

我正在尝试将数据框转换为列表,按列中的唯一值进行分组并进行转置。我不确定是否应该先删除重复值。看起来我需要使用for循环或pandas来做它但我还没弄明白怎么做。如果有人可以提供帮助,那就太棒了。我希望这样做:

cvs中的数据框:

Col1    Col2
Apple   Mary  
Apple   Ben
Apple   Katy
Kiwi    Joy
Kiwi    Sam
Banana  Ben
Banana  Tom
Banana  John

期望的输出:

[Apple, Mary, Ben , Katy]
[Kiwi, Joy, Sam]
[Banana, Ben, Tom, John]

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以获得列表清单

l = [[label] + grp['Col2'].unique().tolist() for label, grp in df.groupby('Col1')]


[['Apple', 'Mary', 'Ben', 'Katy'],
 ['Banana', 'Ben', 'Tom', 'John'],
 ['Kiwi', 'Joy', 'Sam']]

访问个人列表

print(l[0])

['Apple', 'Mary', 'Ben', 'Katy']

答案 1 :(得分:0)

尝试使用.loc。例如:

for fruits in d_f.Col1.unique():
    names = d_f.loc[d_f['Col1']==fruits,"Col2"].tolist()
    print([fruits]+names)