在任何时候更换产品的销售<;20和PythonDataFrame在类似组中的销售平均值相同
我想在dataframe事务(Python)中计算列“Sales”的值。i、 e.用相应类别和品牌的销售额平均值替换产品<20的销售额 例如,我的数据如下表所示:在任何时候更换产品的销售<;20和PythonDataFrame在类似组中的销售平均值相同,python,pandas,dataframe,Python,Pandas,Dataframe,我想在dataframe事务(Python)中计算列“Sales”的值。i、 e.用相应类别和品牌的销售额平均值替换产品
Category,Brand,Sales
Food , pp , 100
Food , pp , 200
Food , pp , 10
Cream , xy , 40
Cream , xy , 2
Cream , xy , 60
第三行(食品和pp)中的销售额(即10)应替换为食品和pp组中所有销售额的平均值,即100+200/2=150[不包括第三行中的销售额(即10)]。
同样适用于第五行,即2应替换为奶油销售平均值,xy即(60+40)/2=50[不包括第五行]。使用与原始df
大小相同的每组过滤值的平均值s,因此可以通过以下条件替换:
再试试这个
df.loc[df['Sales']<20,'Sales']=np.NaN
df['Sales']=df.groupby(['Category'])['Sales'].apply(lambda x: x.fillna(x.mean()))
如果我的答案有用,别忘了-点击复选标记(✓答案旁边的代码>),将其从灰显切换到亮显。谢谢。这个问题与机器学习无关-请不要对有效的标签(已删除)发送垃圾邮件。谢谢:)
a = df[df['Sales']>= 20].groupby(['Category','Brand'])['Sales'].mean()
b = df.drop('Sales', 1).join(a, on=['Category','Brand'])['Sales']
df['Sales'] = np.where(df['Sales'] < 20, b, df['Sales'])
print (df)
Category Brand Sales
0 Food pp 100
1 Food pp 200
2 Food pp 150
3 Cream xy 40
4 Cream xy 50
5 Cream xy 60
df.loc[df['Sales']<20,'Sales']=np.NaN
df['Sales']=df.groupby(['Category'])['Sales'].apply(lambda x: x.fillna(x.mean()))
Category Brand Sales
0 Food pp 100.0
1 Food pp 200.0
2 Food pp 150.0
3 Cream xy 40.0
4 Cream xy 50.0
5 Cream xy 60.0