【发布时间】:2020-02-21 11:29:47
【问题描述】:
我正在尝试操纵 pandas 中数据的年度周期。我创建了降雨数据的年度周期(包括闰日),其中索引是代表月份和日期的字符串。
我想使用日期时间索引在一段时间内(比如 1980-2020 年)重复这些数据。在熊猫中有没有一种巧妙的方法来做到这一点?我能想到的唯一方法是创建一个空的数据框并循环遍历这些年,检查闰年,但我相信一定有更好的方法。
到目前为止,我得到了:
import pandas as pd
import numpy as np
import calendar
data = np.random.rand(366)
df_annual_cycle = pd.DataFrame(
columns=['annual_cycle'],
index=pd.date_range('2004-01-01','2004-12-31').strftime('%m-%d'),
data=data
)
df_annual_cycle.head()
# annual_cycle
# 01-01 0.863838
# 01-02 0.234168
# 01-03 0.368678
# 01-04 0.066332
# 01-05 0.493080
df_every_year=pd.DataFrame(
columns=['rainfall'],index=pd.date_range('1980-01-01','2020-12-31')
)
for year in df_every_year.index.year:
if calendar.isleap(year):
df_every_year[
df_every_year.index.year==year
] = df_annual_cycle.values
elif ~calendar.isleap(year):
df_every_year[
df_every_year.index.year==year
] = df_annual_cycle.drop(index='02-29').values
理想情况下,我希望不必使用 .values 转换为 numpy 数组,因为我的数据框有多个(可能是可变的)列。
【问题讨论】:
标签: python pandas datetime cycle