基于起点和终点d的复制行

2024-06-16 11:49:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我找不到一种方法来执行以下操作: 我的数据如下:

Time (CET)        Start              Duration(min)  End
2015-02-01 00:00  2015-02-01 00:00   2              2015-02-01 00:02

我想要的是,每一行(包含条目,很多不包含条目)都会根据持续时间或结束日期以以下方式进行复制:

Time (CET)        Start              Duration(min)  End
2015-02-01 00:00  2015-02-01 00:00   2              2015-02-01 00:02
2015-02-01 00:01  2015-02-01 00:00   2              2015-02-01 00:02
2015-02-01 00:02  2015-02-01 00:00   2              2015-02-01 00:02

在结束数据帧中,开始列和结束列不再是必需的。我考虑过使用shift,但不确定它是否正确,以及如何使用freq参数。有什么办法吗

时间列采用datetime格式,时间(CET)是索引

非常感谢


Tags: 数据方法参数shifttime方式时间条目
1条回答
网友
1楼 · 发布于 2024-06-16 11:49:19

可以按^{}^{}重复行,并将^{}^{}创建的时间增量添加到Time (CET)列:

print (df)
         Time (CET)             Start  Duration(min)               End
0  2015-02-01 00:00  2015-02-01 00:00              2  2015-02-01 00:02
1  2015-02-02 00:00  2015-02-02 00:00              3  2015-02-02 00:02

#convert columns to datetimes
c = ['Time (CET)','Start','End']
df[c] = df[c].apply(pd.to_datetime)

df = df.loc[df.index.repeat(df['Duration(min)'] + 1)]
df['Time (CET)'] += pd.to_timedelta(df.groupby(level=0).cumcount(), unit='s') * 60
df = df.reset_index(drop=True).drop(['Start','End'], axis=1)
print (df)
           Time (CET)  Duration(min)
0 2015-02-01 00:00:00              2
1 2015-02-01 00:01:00              2
2 2015-02-01 00:02:00              2
3 2015-02-02 00:00:00              3
4 2015-02-02 00:01:00              3
5 2015-02-02 00:02:00              3
6 2015-02-02 00:03:00              3

相关问题 更多 >