我目前在腳本中有一個回圈,旨在處理原始測驗資料檔案,并在清理資料期間執行一堆計算。在撰寫腳本期間,我需要準確計算每個測驗中有多少個周期。step當包含一個位置的值i大于下一個step,時,可以定義一個回圈i 1。例如,步數將達到 4,下一步是 1,因此下一步是新回圈的開始。到目前為止,我正在用這個簡單的回圈計算這個:
raw_data = {'Step':[1,1,2,2,2,3,3,4,4,4,1,2,2,3,3,3,4,4,4,4,1,2,2,3,3,4,4,4]}
cycle_test = 1
for i in range(len(raw_data)-1):
if raw_data['Step'][i] > raw_data['Step'][i 1]:
raw_data['CyclesTest'][i] = cycle_test
cycle_test =1
else:
raw_data['CyclesTest'][i] = cycle_test
這很好用,但是raw_data提供的內容非常大,我的腳本一直在進行這個計算。我以前rolling做過max和min比較過,但是可以用它來代替這個for回圈嗎?我剛剛重新開始編程,所以每天又是上學日!任何幫助將不勝感激。
uj5u.com熱心網友回復:
你可以這樣做:
import pandas as pd
raw_data = {'Step':[1,1,2,2,2,3,3,4,4,4,1,2,2,3,3,3,4,4,4,4,1,2,2,3,3,4,4,4]}
df = pd.DataFrame(raw_data)
df['CycleTest'] = (df['Step'].diff() < 0).cumsum() 1
print(df)
Step CycleTest
0 1 1
1 1 1
2 2 1
3 2 1
4 2 1
5 3 1
6 3 1
7 4 1
8 4 1
9 4 1
10 1 2
11 2 2
12 2 2
13 3 2
14 3 2
15 3 2
16 4 2
17 4 2
18 4 2
19 4 2
20 1 3
21 2 3
22 2 3
23 3 3
24 3 3
25 4 3
26 4 3
27 4 3
檢查值何時變小diff并用于cumsum累積計算這些事件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/474464.html
下一篇:NasaAPI傳遞資料太慢了
