刪除非連續的值,我有這樣一個數據幀:從數據幀列
Ind TIME PREC ET PET YIELD
0 1 1.21 0.02 0.02 0.00
1 2 0.00 0.03 0.04 0.00
2 3 0.00 0.03 0.05 0.00
3 4 0.00 0.04 0.05 0.00
4 5 0.00 0.05 0.07 0.00
5 6 0.00 0.03 0.05 0.00
6 7 0.00 0.02 0.04 0.00
7 8 1.14 0.03 0.04 0.00
8 9 0.10 0.02 0.03 0.00
9 10 0.00 0.03 0.04 0.00
10 11 0.10 0.05 0.11 0.00
11 12 0.00 0.06 0.15 0.00
12 13 2.30 0.14 0.44 0.00
13 14 0.17 0.09 0.29 0.00
14 15 0.00 0.13 0.35 0.00
15 16 0.00 0.14 0.39 0.00
16 17 0.00 0.10 0.31 0.00
17 18 0.00 0.15 0.51 0.00
18 19 0.00 0.22 0.58 0.00
19 20 0.10 0.04 0.09 0.00
20 21 0.00 0.04 0.06 0.00
21 22 0.27 0.13 0.43 0.00
22 23 0.00 0.10 0.25 0.00
23 24 0.00 0.03 0.04 0.00
24 25 0.00 0.04 0.05 0.00
25 26 0.43 0.04 0.15 0.00
26 27 0.17 0.06 0.23 0.00
27 28 0.50 0.02 0.04 0.00
28 29 0.00 0.03 0.04 0.00
29 30 0.00 0.04 0.08 0.00
30 31 0.00 0.04 0.08 0.00
31 1 6.48 1.97 5.10 0.03
32 32 0.00 0.22 0.70 0.00
33 33 0.00 0.49 0.88 0.00
在這個數據幀列'TIME'
顯示了全年序天數,每月結束後 - 的序號一年中的月份,這混亂了所有的數據幀計算,所以,因此,我想刪除所有包含月份值的行。首先,我試圖用.shift()
:
df = df.loc[df.TIME == df.TIME.shift() +1]
,
然而,在這種情況下,我儘可能多的行刪除的兩倍,因爲它應該是。我也試過每個月結束後刪除所有值:
for i in indexes:
df = df.loc[df.index != i],
其中indexes
是一個列表,包含行索引後一天值等於31,59,... 365或每個月的月底。但是,在閏年中,這些值會有所不同,並且我可以爲閏年創建另一個列表,但此方法非常非pythonist。所以,我想知道,是否有更好的方法從數據框中刪除非連續值(不包括一年結束,另一個開始:364,365,1,2)? 編輯:我想,也許,添加有二十多年的這個數據幀,所以這是數據幀怎麼看起來像在每年年底:
TIME PREC ET PET YIELD 370 360 0.00 0.14 0.26 0.04 371 361 0.00 0.15 0.27 0.04 372 362 0.00 0.14 0.25 0.04 373 363 0.11 0.18 0.32 0.04 374 364 0.00 0.15 0.25 0.04 375 365 0.00 0.17 0.29 0.04 376 12 16.29 4.44 7.74 1.89 377 1 0.00 0.16 0.28 0.03 378 2 0.00 0.18 0.32 0.03 379 3 0.00 0.22 0.40 0.03
但是,此方法也適用,因爲在@piRSquared解決方案中,一年中第一天的行消失。 –
謝謝,@EFT。 「<=」是什麼意思? –
小於或等於。 – EFT