我正在尝试将数据框转换为列表,按列中的唯一值进行分组并进行转置。我不确定是否应该先删除重复值。看起来我需要使用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]
谢谢!
答案 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)