熊猫:基于分钟的列,每行需要增加15秒

时间:2019-05-13 09:59:14

标签: python pandas

我的数据框如下:

1      2019-04-22 00:01:00
2      2019-04-22 00:01:00
3      2019-04-22 00:01:00
4      2019-04-22 00:01:00
5      2019-04-22 00:02:00
6      2019-04-22 00:02:00
7      2019-04-22 00:02:00
8      2019-04-22 00:02:00
9      2019-04-22 00:03:00
10     2019-04-22 00:03:00
11     2019-04-22 00:03:00
12     2019-04-22 00:03:00

正如您所看到的,每分钟有四行,我需要在每行中添加15秒,以使它看起来像这样:

1      2019-04-22 00:01:00
2      2019-04-22 00:01:15
3      2019-04-22 00:01:30
4      2019-04-22 00:01:45
5      2019-04-22 00:02:00
6      2019-04-22 00:02:15
7      2019-04-22 00:02:30
8      2019-04-22 00:02:45
9      2019-04-22 00:03:00
10     2019-04-22 00:03:15
11     2019-04-22 00:03:30
12     2019-04-22 00:03:45

关于如何进行的任何想法?我不是很擅长日期时间对象,所以我对那个对象有点卡住了……谢谢你!

1 个答案:

答案 0 :(得分:3)

您可以将timedeltas添加到datetimes列:

df['date'] += pd.to_timedelta(df.groupby('date').cumcount() * 15, unit='s')

print (df)
                  date
1  2019-04-22 00:01:00
2  2019-04-22 00:01:15
3  2019-04-22 00:01:30
4  2019-04-22 00:01:45
5  2019-04-22 00:02:00
6  2019-04-22 00:02:15
7  2019-04-22 00:02:30
8  2019-04-22 00:02:45
9  2019-04-22 00:03:00
10 2019-04-22 00:03:15
11 2019-04-22 00:03:30
12 2019-04-22 00:03:45

详细信息

首先由GroupBy.cumcount创建计数器Series

print (df.groupby('date').cumcount())
1     0
2     1
3     2
4     3
5     0
6     1
7     2
8     3
9     0
10    1
11    2
12    3
dtype: int64

乘以15,然后乘以to_timedelta转换为秒时间增量:

print (pd.to_timedelta(df.groupby('date').cumcount() * 15, unit='s'))
1    00:00:00
2    00:00:15
3    00:00:30
4    00:00:45
5    00:00:00
6    00:00:15
7    00:00:30
8    00:00:45
9    00:00:00
10   00:00:15
11   00:00:30
12   00:00:45
dtype: timedelta64[ns]