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



我的dataframe看起来像这样:

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

关于如何进行的任何想法?我并不是很擅长DateTime对象,所以我有点陷入困境...谢谢您!

您可以将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]

最新更新