【问题标题】:Get a list of values from a pandas dataframe从熊猫数据框中获取值列表
【发布时间】:2022-01-11 01:28:34
【问题描述】:

我有一个这样的数据框

df.head()
>>>
Date Region   Manager   SalesMan    Item         Units  Unit_price  Sale_amt
 0   East     Martha    Alexander   Television   ...      ...         ...
 1   Central  Hermann   Shelli      Home Theater ...      ...         ...
 2   Central  Hermann   Luis        Television   ...      ...         ...
 3   Central  Timothy   David       CellPhone    ...      ...         ...
 4   West     Timothy   Stephen     Television   ...      ...         ...

这里有独特的经理和销售人员

df['Manager'].unique()
array(['Martha', 'Hermann', 'Timothy', 'Douglas'], dtype=object)


df['SalesMan'].unique()
array(['Alexander', 'Shelli', 'Luis', 'David', 'Stephen', 'Steven',
       'Michael', 'Sigal', 'Diana', 'Karen', 'John'], dtype=object)

我想要一个包含唯一经理和这些经理下唯一销售员列表的数据框 例如,对于上面的数据框,我想要这样的输出:

Manager     list_of_salesmen
Martha      [ALexander]
Herman      [Shelli, Luis]
Timothy     [David, Stephen]

我想到了使用 groupby 并在那里被击中! 我该如何解决这个问题?

【问题讨论】:

标签: python pandas dataframe pandas-groupby


【解决方案1】:

您可以在 Manager 上使用 groupby.agg,并将 list 传递给 SalesMan:

>>> df.groupby('Manager').agg({'SalesMan':list})

                SalesMan
Manager                  
Hermann    [Shelli, Luis]
Martha        [Alexander]
Timothy  [David, Stephen]

【讨论】:

    【解决方案2】:

    可以通过创建一个包含新数据集数据的dict() 对象并使用pandas.DataFrame.from_dict() 将其转换为数据框来完成:

    d = {'Manager':list(df['Manager'].unique()), 'SalesMan':[]}
    
    for i in df['Manager'].unique():
        d['SalesMan'].append([i for i in df[df['Manager'] == i]['SalesMan']])
    
    df2 = pd.DataFrame.from_dict(d)
    

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 2014-04-15
      • 1970-01-01
      • 2021-01-19
      • 2017-06-16
      • 1970-01-01
      • 2019-02-22
      相关资源
      最近更新 更多