如何使用Pandas在基于预测周期00和12 UTC的 Dataframe 中添加新列

wgeznvg7  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(114)

我有一个数据框,其中包含两个预报周期的数据,一个从00 UTC开始,一直到168小时预报(预测(有效时间列)和另一个周期开始于12 UTC,也将上升到168小时预测。基于我下面的 Dataframe ,我想创建一个名为cycle的列,它对应于数据引用的预测周期的Date-Time列。例如:

Date-Time             Cycle
2020-07-16 00:00:00   00
2020-07-16 00:00:00   12

我该怎么做呢?
我的 Dataframe 如下所示:

Array file

c2e8gylq

c2e8gylq1#

IIUC,您可以将pandas.Series.wherepandas.Series.ffill一起使用:

import numpy

df = pd.read_csv("df.csv", sep=";", index_col=0, usecols=[0,1,2])
​
df['Date-Time'] = pd.to_datetime(df['Date-Time'])
​
#is it the start of the cycle ?
m = df["Forecast (valid time)"].eq(0)

df["Cycle"] = df["Date-Time"].dt.hour.where(m).ffill()

输出:

print(df.groupby("Cycle").head(5))

             Date-Time  Forecast (valid time)  Cycle
0  2020-07-16 00:00:00                    0.0      0
1  2020-07-16 03:00:00                    3.0      0
2  2020-07-16 06:00:00                    6.0      0
3  2020-07-16 09:00:00                    9.0      0
4  2020-07-16 12:00:00                   12.0      0
57 2020-07-16 12:00:00                    0.0     12
58 2020-07-16 15:00:00                    3.0     12
59 2020-07-16 18:00:00                    6.0     12
60 2020-07-16 21:00:00                    9.0     12
61 2020-07-17 00:00:00                   12.0     12

相关问题