将数据框的列值聚合到新数据框

时间:2018-10-29 11:47:55

标签: python pandas dataframe

我有一个数据框,其中涉及市场上各种列的供应商,产品,价格以及其他列值。

Dataframe

我需要一个数据框,其中包含不同的列,不同的供应商,产品数量,产品清单总和,平均价格/产品和(平均*销售数量)。

类似的东西-

Result

制作此新数据框的最佳方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:2)

首先将多列Number of SalesPrice一起使用,然后将DataFrameGroupBy.agg通过具有聚合函数的列名称字典使用,然后用map和{{1}将多索引中的MultiIndex展平}。 :

rename

答案 1 :(得分:1)

您可以使用groupby()进行操作,如下所示:

df.groupby('Vendor').agg({'Products': 'count', 'Price': ['sum', 'mean']})

那只是三列,但是您可以解决其余的问题。

答案 2 :(得分:0)

您可以通过使用熊猫pivot_table来做到这一点。这是一个基于您的数据的示例。

import pandas as pd
import numpy as np

>>> f = pd.pivot_table(d, index=['Vendor', 'Sales'], values=['Price', 'Product'], aggfunc={'Price': np.sum, 'Product':np.ma.count}).reset_index()

>>> f['Avg Price/Product'] = f['Price']/f['Product']

>>> f['H Factor'] = f['Sales']*f['Avg Price/Product']

>>> f.drop('Sales', axis=1)

  Vendor  Price  Product  Avg Price/Product  H Factor
0      A    121        4              30.25    6050.0
1      B     12        1              12.00    1440.0
2      C     47        2              23.50     587.5
3      H     45        1              45.00    9000.0