删除非连续的值,我有这样一个数据帧:从数据帧列
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