根据阈值拆分多个熊猫数据帧,并在阈值之间生成二进制类别的计数

时间:2018-11-23 15:33:41

标签: python pandas

我有一系列数据框,所有数据框都包含一年的连续降雨数据和指示是否发生洪水的二进制数据。我希望计算出在给定的时间间隔/以上降雨阈值之内发生或未发生洪水的天数。我的数据看起来像这样:

    date    ppt    fld
01/01/2016  0.23   0
02/01/2016  1.6    0
03/01/2016  10.5   1
04/01/2016  25.4   1
05/01/2016  0.3    0
06/01/2016  6.5    1
07/01/2016  11.2   1
08/01/2016  5.5    0
...

我已应用以下代码使用掩码分割单个数据帧:

mask5 = df['ppt3'] >= 5
ppt5 = df[~mask5] #Under 5mm
ppt5p = df[mask5] #Over 5mm

mask10 = ppt5p['ppt3'] >= 10
ppt10 = ppt5p[~mask10] #5-10mm
ppt10p = ppt5p[mask10] #Over 10mm

mask20 = ppt10p['ppt3'] >= 20
ppt20 = ppt10p[~mask20] #10-20mm
ppt20p = ppt10p[mask20] #Over 20mm 

然后使用以下代码来计算每个间隔的计数:

print(ppt5['fld'].value_counts()) #Under 5mm
print(ppt10['fld'].value_counts()) #5-10mm
print(ppt20['fld'].value_counts()) #10-20mm
print(ppt20p['fld'].value_counts()) #Over 20mm

产生以下内容:

0.0     3
1.0     0
Name: SzT, dtype: int64
0.0     1
1.0     1
Name: SzT, dtype: int64
0.0     0 
1.0     2
Name: SzT, dtype: int64
0.0     0
1.0     1
Name: SzT, dtype: int64

所以这告诉我,在小于5毫米的所有日子里,都没有洪水发生。在5到10毫米之间的日子里,有一天有洪水,有一天没有洪水。在这两天中,发生10至20毫米之间的洪水,而在发生20毫米以上的当天发生洪水。好东西。

但是我有20个数据框可以做到这一点,关于如何加快/更有​​效地执行此过程,是否有任何想法?

非常感谢

0 个答案:

没有答案