我有一個資料集,我必須在其中確定玩具的銷售價值是否大于列中的平均值,并計算有多少不同的銷售區域,價值大于平均值。
例如:找到列的平均值"Sale B"- 2.5,檢查值大于 2.5 的行數,然后執行相同的練習"SaleA","SaleC"然后將所有行相加
input_data = pd.DataFrame({'Toy': ['A','B','C','D'],
'Color': ['Red','Green','Orange','Blue'],
'SaleA': [1,2,0,1],
'SaleB': [1,3,4,2],
'SaleC': [5,2,3,5]})
新列"Count_Sale_Average"已創建,例如:玩具“A”僅在一個位置的銷售額高于平均水平。
output_data = pd.DataFrame({'Toy': ['A','B','C','D'],
'Color': ['Red','Green','Orange','Blue'],
'SaleA': [1,2,0,1],
'SaleB': [1,3,4,2],
'SaleC': [5,2,3,5],
'Count_Sale_Average':[1,2,1,1]})
我的代碼正在運行并提供所需的輸出。關于其他方式的任何建議,可能會更有效且行數更少。
list_var = ['SaleA','SaleB','SaleC']
df = input_data[list_var]
for i in range(0,len(list_var)):
var = list_var[i]
mean_var = df[var].mean()
df[var] = df[var].apply(lambda x: 1 if x > mean_var else 0)
df['Count_Sale_Average'] = df[list_var].sum(axis=1)
output_data = pd.concat([input_data, df[['Count_Sale_Average']]], axis=1)
output_data
uj5u.com熱心網友回復:
你可以filter, 找到mean和sum在軸上:
filtered = input_data.filter(like='Sale')
input_data['Count_Sale_Average'] = filtered.gt(filtered.mean()).sum(axis=1)
輸出:
Toy Color SaleA SaleB SaleC Count_Sale_Average
0 A Red 1 1 5 1
1 B Green 2 3 2 2
2 C Orange 0 4 3 1
3 D Blue 1 2 5 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/430610.html
