python - 气候学频率和持续时间
问题描述
我有一个 10 年的气候数据集如下。
dt T P
01-01-2010 3 0
02-01-2010 5 11
03-01-2010 10 50
....
31-12-2020 -1 0
我想估计每个月 T 和 P 连续大于 0 三天或更长时间的总天数
我希望这些列作为输出:
month Number of days/DurationT&P>0 T P
我从未在 python 中使用过循环,当数据必须首先按月和年分组然后应用条件时,我似乎能够编写一个简单的循环,除此之外什么都没有。非常感谢有关循环构造的任何提示。
A= dataset
A['dt'] = pd.to_datetime(A['dt'], format='%Y-%m-%d')
for column in A [['P', 'T']]:
for i in range (len('P')):
if i > 0:
P.value_counts()
print(i)
for j in range (len ('T')):
if i > 0:
T.value_counts()
print(j)
解决方案
这是一种非常幼稚的方法,您可以通过简单地遍历行来设置它:
df['valid'] = (df['T'] > 0) & (df['P'] > 0)
def count_total_days(df):
i = 0
total = 0
for idx, row in df.iterrows():
if row.valid:
i += 1
elif not row.valid:
if i >= 3:
total += i
i = 0
return total
由于您每月都需要它,因此您首先必须创建新的月份和年份列来分组:
df['month'] = df['dt'].dt.month
df['year'] = df['dt'].dt.year
for date, df_subset in df.groupby(['month', 'year']):
count_total_days(df_subset)
推荐阅读
- python - 如何有效地在大二进制文件中搜索模式
- java - Spring WebClient - 记录 Uri 和响应方法
- algorithm - 没有守恒性质的非整数 K-商品流的复杂性
- sql - 加入 2 个表并仅保留第一个最近的事件
- ocr - tesseract 5.0 bazaar + user-words 配置不起作用
- azure - 如何获取从 Azure Devops / VSTS / TFS 中的“Windows 机器文件复制”任务复制的文件总数?
- python - 气流 - 彩色记录
- jsf - 在 InputText 中添加或删除可见字符后触发 valueChange 事件
- r - dbplyr 绕过索引并运行顺序扫描
- aop - Spring AOP 切入点 if 条件