对于“ 从”到“ 到”的每个范围,我想创建一个date_range。所以我正在遍历数据框。对于每一行,都会生成一个DatetimeIndex。
我试图将其转换为数据框,然后将其附加到空数据框,所以我有了整体范围。但是最终的数据帧(day_wise)最终为空!所以不知道问题出在哪里。
day_wise = pd.DataFrame(columns=['day'])
for index, row in elec_ds.iterrows():
for_day = pd.date_range(start=row['From'], end=row['To'], freq='D')
for_day = pd.DataFrame(for_day)
day_wise.append(for_day)
答案 0 :(得分:0)
您可以完全避免for
循环。假设您使用的是熊猫v0.25或更高版本,则可以使用explode
:
day_wise = df.apply(lambda row: pd.date_range(row['From'], row['To']), axis=1) \
.explode() \
.to_frame('Day')
结果:
Day
0 2018-10-23
0 2018-10-24
0 2018-10-25
0 2018-10-26
0 2018-10-27
说明:
apply(lambda ..., axis=1)
从每行的From
和To
列中设置日期范围explode
将范围分为几天to_frame
将系列转换为DataFrame