在任何时候更换产品的销售<;20和PythonDataFrame在类似组中的销售平均值相同

在任何时候更换产品的销售<;20和PythonDataFrame在类似组中的销售平均值相同,python,pandas,dataframe,Python,Pandas,Dataframe,我想在dataframe事务(Python)中计算列“Sales”的值。i、 e.用相应类别和品牌的销售额平均值替换产品

我想在dataframe事务(Python)中计算列“Sales”的值。i、 e.用相应类别和品牌的销售额平均值替换产品<20的销售额

例如,我的数据如下表所示:

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