分布时间(毫秒),曲线平滑

时间:2019-05-29 16:28:20

标签: python pandas dataframe datetime

我有一个数据框,其中一列包含日期时间。日期时间是几秒钟。我需要自动将毫秒添加到秒,因为每个秒值都有多个值。 例如-2019年2月21日下午3:50:41,我有35次此时间戳记。如果我可以将毫秒添加到此时间戳,那么当我绘制曲线时,它将是一条平滑的曲线。而第二个值具有不同数量的实例。

1 个答案:

答案 0 :(得分:2)

您可以尝试groupby修改日期

df = pd.DataFrame({'date': pd.to_datetime(['Feb 21, 2019 3:50:41 PM']*35 + 
                                          ['Feb 21, 2019 3:50:42 PM']*100),
                        'val': np.linspace(0,1,135)})

def time_shift(s):
    count = len(s)
    deltas = pd.timedelta_range('0ms', '1000ms',
                                periods=count+1, closed='left')
    return s + deltas

df.date = df.groupby(['date']).date.transform(time_shift)

plt.plot(df.date, df.val)

原始数据框图:

![enter image description here

按毫秒缩放后的图:

![enter image description here

移位后的数据框:

df.tail(5)

+-----+-------------------------------+----------+
|     | date                          |      val |
|-----+-------------------------------+----------|
| 130 | 2019-02-21 15:50:42.959595959 | 0.970149 |
| 131 | 2019-02-21 15:50:42.969696969 | 0.977612 |
| 132 | 2019-02-21 15:50:42.979797979 | 0.985075 |
| 133 | 2019-02-21 15:50:42.989898989 | 0.992537 |
| 134 | 2019-02-21 15:50:43           | 1        |
+-----+-------------------------------+----------+