【发布时间】:2021-09-21 21:11:50
【问题描述】:
我在数据框 (df) 中有每小时数据,我需要计算满足多个数据列条件的天数,然后在 df 中按月和年对这些计数求和,以描述存在所有 3 个数据条件的每日“事件” .我的数据如下所示:
site wind time temp rh year month day
0 Cirrus 4.3 2011-01-01 20:00:00 5.9 54.6 2011 1 1
1 Cirrus 3.9 2011-01-01 19:00:00 4.2 28.5 2011 1 1
2 Cirrus 6.8 2011-01-01 18:00:00 3.3 19.5 2011 1 1
3 Stratus 4.9 2011-01-01 23:00:00 2.9 27.3 2011 1 1
4 Stratus 2.9 2011-01-01 22:00:00 1.8 17.1 2011 1 1
5 Stratus 2.1 2011-01-01 21:00:00 0.2 53.2 2011 1 1
6 Stratus 0.9 2014-02-01 23:00:00 3.8 19.9 2014 2 1
我的标准需要针对 3 个条件:风 (=1.0 和
我的结果应该是这样的:
Site year month condition_count
0 Cirrus 2011 1 1
1 Stratus 2011 1 2
2 Stratus 2014 2 1
我已经研究过使用 lambda 函数按行过滤每个列阈值,类似这样,但我不确定这是获得答案的好方向。
isWind = lambda x:int(x <= 5)
isAir = lambda x:int(x >= 1 & <=5)
isRH = lambda x:int(x <=30)
countlimits = lambda row: isWind(row['wind_speed_ms']) + isAir(row['air_temp_c']) +
isRH(row['relative_humidity_pct'])
df['Event_Days'] = df.apply(countlimits,axis=1)
我也尝试过类似的方法,但它给出了将 rand 数组与标量混合的错误:
df_final = df[(df.wind_speed_ms < 5) & (df.loc[(df['air_temp_c'] >= 1)
& (df['air_temp_c'] < 5)]) & (df.relative_humidity_pct <= 30)].sum()
提前感谢您的帮助。
【问题讨论】:
-
df[(df['wind']>=5)&(df['temp']>=1)&(df['temp']
标签: pandas events conditional-statements multiple-columns multiple-conditions