我目前正在使用 pandas 資料框,我希望創建兩個平均值,一個稱為overload_average,一個稱為baseline_average。使用 column strain,我希望取該列的第一個值的平均值,然后每 5 個值取平均值overload_average。另一個平均值baseline_average是介于兩者之間的所有值的平均值,因此位置 1-4、6-9 等處的值。到目前為止,這就是我正在使用的東西,以及我認為我可以如何使用 iloc 實作這一目標。(為了重現性而縮小)
data = pd.DataFrame({"strain":[12, 4, 5, 4, 1, 3, 2, 5, 10, 9]}
overload_average = data['strain'].iloc[0:5].average()
baseline_average = data['strain'].iloc[1:4].average()
但是,我正在努力完成這項作業并想出一種方法來a)使它成為重復宣告和b)如何分離過載的值(因為我不希望將兩者之間的值包含在我的平均值中.我也想我可以用 numpy 來做這個嗎?任何幫助將不勝感激!
uj5u.com熱心網友回復:
您可以使用切片 ( ) 輕松獲取每 5 個專案::5,將其保存為索引并使用它來獲取基線的差異:
idx = data.index[::5]
overload_average = data.loc[idx, 'strain'].mean()
# 7.5
baseline_average = data.loc[data.index.difference(idx), 'strain'].mean()
# 5.0
numpy或者,使用和模構建一個掩碼:
mask = np.arange(len(data))%5
overload_average = data.loc[mask==0, 'strain'].mean()
# 7.5
baseline_average = data.loc[mask!=0, 'strain'].mean()
# 5.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/493403.html
