我有一个数据框,其中涉及市场上各种列的供应商,产品,价格以及其他列值。
我需要一个数据框,其中包含不同的列,不同的供应商,产品数量,产品清单总和,平均价格/产品和(平均*销售数量)。
类似的东西-
制作此新数据框的最佳方法是什么?
谢谢!
答案 0 :(得分:2)
首先将多列Number of Sales
与Price
一起使用,然后将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