【问题标题】:Python - Group by unique value of a column and transpose df to listsPython - 按列的唯一值分组并将df转置为列表
【发布时间】:2017-10-27 19:06:39
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: python pandas dataframe unique transpose


    【解决方案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']
    

    【讨论】:

      【解决方案2】:

      尝试使用.loc。例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 2016-11-15
        • 2021-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多