我在設定的時間間隔從多個樣本收集了一些實驗數據,在數據幀組織像這樣:熊貓時間序列區間和索引
Studynumber Time Concentration
1 20 80
1 40 60
1 60 40
2 15 95
2 44 70
2 65 30
雖然時間間隔都應該是固定的,有數據的一些變化取決於他們實際收集的時間。我想創建「時間」列的容器,計算「平均」濃度,然後比較每次學習次數的實際濃度與平均濃度之間的差異。
要做到這一點,我創建了一個名爲「每局」一欄,然後使用GROUPBY計算平均值:
data['roundtime']=data['Time'].round(decimals=-1)
meanconc = data.groupby('roundtime')['Concentration'].mean()
這給出了一個熊貓系列的平均濃度,以每局爲指標。然後,我想這回主幀計算出每個實際濃度和平均濃度之間的差別:
data['meanconcentration']=meanconc.loc[data['roundtime']].reset_index()['Concentration']
這適用於前60倍左右的值,但隨後返回NaN每個條目,我認爲是因爲數據的指數比平均濃度指數更長。
一方面,這看起來像一個索引問題 - 同樣,這可能是我剛剛接近錯誤的方式。所以我的問題是:a)這種方法可以工作嗎?和b)有沒有更好的方法呢?歡迎所有建議!
你想'數據['meanconcentration '] = data.groupby('roundtime')['Concentration']。transform('mean')'?這會返回一個「系列」,其索引與您的原始df – EdChum
相對應您可以將它放入答案中,並解釋.transform('mean')的作用是什麼?它不給我NaN - 只需要檢查它給我正確的值!謝謝 – TMrtSmith