這是我的資料框的一部分:
df = pd.DataFrame({
'IBI_msec': [652, 618, 654],
'rate': [92.02, 97.09, 91.74]
})
我需要計算一個回圈,使我能夠計算這個邏輯:
- if
652 > 500, thenbin = 92.02, 剩下(652 - 500)的進入下一個 bin; - 因為
bin2包含152上一行剩余的 ,所以只需要348msec from618。在這種情況下,需要加權平均值:((152*92.02) (348*97.09)) / 500它給出95.55. - (我不希望資料中的 IBI 值低于 500)。

最終結果應該是這樣的:
IBI_msec rate bins
0 652 92.02 92.02
1 618 97.09 95.55
2 654 91.74 94.63
uj5u.com熱心網友回復:
這就是你想要的:也就是說,如果(當)余數超過 500 時就會出現問題,所以你應該完成你的規則來處理這種情況。
import pandas as pd
df = pd.DataFrame({
'IBI_msec': [652, 618, 654],
'rate': [92.02, 97.09, 91.74]
})
bins = []
remainder = 0
for i in range(len(df)):
if i == 0:
bins.append(df['rate'][0])
fill = 500
else:
fill = 500 - remainder
bins.append(round((remainder*df['rate'][i-1] fill*df['rate'][i])/500,2))
remainder = df['IBI_msec'][i] - fill
print(bins)
# [92.02, 95.55, 94.63]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/534279.html
標籤:Python循环加权的
