簡體   English   中英

具有非連續索引的循環

[英]For loop with non-consecutive indices

我對 Phyton 很陌生並且使用數據框,所以這可能是一個非常簡單的問題。

我成功地導入了一些測量數據(1 分鍾分辨率)並對它們進行了一些計算。 我想以 15 分鍾為基礎(不是平均值)重新計算一些數據處理,為此我從原始數據框中提取了每一行:00、:15、:30 和:45。

df_interval = df[(df['DateTime'].dt.minute == 0) | (df['DateTime'].dt.minute == 15) | (df['DateTime'].dt.minute == 30) | (df['DateTime'].dt.minute == 45)]

這似乎工作正常。 現在我想根據儀器內部所做的每 15 分鍾重新計算一次濃度,這是一個簡單的公式。

所以我嘗試的是:

for i in df_interval.index:
    if np.isnan(df_interval.ATN[i]) == False and np.isnan(df_interval.ATN[i+1]) == False:  
            df_15min = (0.785 *((df_interval.ATN[i+1]-df_interval.ATN[i])/100))/(df_interval.Flow[i]*(1-0.07)*10.8*(1-df_interval.K[i]*df_interval.ATN[i])*15)

然而,我最終得到一個 KeyError: 226。我不明白為什么......

更新:

這是數據,在最后一列 (df_15min) 中也是我想要獲得的結果:

航空運輸網 df_15min
150 3647 0.00994
165 3634 0.00996
180 3634 0.00995
195 3621 0.00995
210 3615 0.00994
225 1.703678939 3754 0.00994 3.75E-08
240 4.356519267 3741 0.00994 3.84E-08
255 6.997422571 3741 0.00994 3.94E-08
270 9.627710046 3736 0.00995 4.02E-08
285 12.23379251 3728 0.01007 3.89E-08
300 14.67175418 3727 0.01026 3.76E-08
315 16.9583747 3714 0.01043 3.73E-08
330 19.1497249 3714 0.01061 3.96E-08
345 21.39628083 3709 0.01079 3.87E-08
360 23.51512717 3701 0.01086 4.02E-08
375 25.63995721 3700 0.01083 3.90E-08
390 27.63886191 3688 0.0108 3.47E-08
405 29.36343728 3688 0.01076 3.68E-08
420 31.14291069 3677 0.01072 3.90E-08

我在 Igor 做了很多事情,所以我會在那里做(不幸的是,這次它必須在 python):

variable i
    For (i=0; i<numpnts(ATN)-1; i+=1)
        df_15min[i] = (0.785 *((ATN[i+1]-ATN[i])/100))/(Flow[i]*(1-0.07)*10.8*(1-K[i]*ATN[i])*15)
    endfor

任何幫助將不勝感激,謝謝!

您的 if 條件檢查bc _interval.row1[i+1] 是否為 nan,然后您訪問df _interval.row1[i+1]。 看起來您想改為檢查df _interval.row1[i+1] 。

您可以從字面上編寫與矢量代碼相同的操作。 只需使用整行和shift(-1)即可獲得“下一個”行。

df['df_15min'] = (0.785 *((df['ATN'].shift(-1)-df['ATN'])/100))/(df['Flow']*(1-0.07)*10.8*(1-df['K']*df['ATN'])*15)

或者使用diff

df['df_15min'] = (0.785 *((-df['ATN'].diff(-1))/100))/(df['Flow']*(1-0.07)*10.8*(1-df['K']*df['ATN'])*15)

output:

             ATN  Flow        K      df_15min
index                                        
150          NaN  3647  0.00994           NaN
165          NaN  3634  0.00996           NaN
180          NaN  3634  0.00995           NaN
195          NaN  3621  0.00995           NaN
210          NaN  3615  0.00994           NaN
225     1.703679  3754  0.00994  3.745468e-08
240     4.356519  3741  0.00994  3.844700e-08
255     6.997423  3741  0.00994  3.937279e-08
270     9.627710  3736  0.00995  4.019633e-08
285    12.233793  3728  0.01007  3.886148e-08
300    14.671754  3727  0.01026  3.763219e-08
315    16.958375  3714  0.01043  3.734876e-08
330    19.149725  3714  0.01061  3.955360e-08
345    21.396281  3709  0.01079  3.870011e-08
360    23.515127  3701  0.01086  4.017342e-08
375    25.639957  3700  0.01083  3.897022e-08
390    27.638862  3688  0.01080  3.473242e-08
405    29.363437  3688  0.01076  3.675232e-08
420    31.142911  3677  0.01072           NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM