【发布时间】:2020-03-17 11:32:42
【问题描述】:
我有一张看起来像这样的桌子
import numpy as np
import pandas as pd
tmp=[["","5-9",""],["","",""],["17-","","4- -9 27-"],["-6","",""],["","","-15"]]
dat=pd.DataFrame(tmp).rename(columns={0:"V0",1:"V1",2:"V2"})
dat["Month"]=np.arange(1,6)
dat["Year"]=np.repeat(2015,5)
V0 V1 V2 Month Year
0 5-9 1 2015
1 2 2015
2 17- 4- -9 27- 3 2015
3 -6 4 2015
4 -15 5 2015
...
表中的数字代表特定事件发生的天数(以月计)。注意:月份可以有多个事件,事件可以跨越多个月。
V1、V2 和 V3 是三个不同的设备,每个设备都有自己独立的事件。所以我们有三个不同的时间序列。
我想将此表转换为时间序列数据框,即每天对每个设备进行分解。每行将是一个月(一年)的一天,每列现在只有 0 或 1 的值,如果当天没有事件发生,则为 0,否则为 1(虚拟变量)。结果将包含三个不同的时间序列,每个设备一个。我该怎么做?
这就是输出的样子
V0 V1 V2 Day Month Year
0 0 0 0 1 1 2015
1 0 0 0 2 1 2015
2 0 0 0 3 1 2015
3 0 0 0 4 1 2015
4 0 0 0 5 1 2015
5 0 1 0 6 1 2015
6 0 1 0 7 1 2015
7 0 1 0 8 1 2015
8 0 1 0 9 1 2015
9 0 1 0 10 1 2015
10 0 0 0 11 1 2015
11 0 0 0 12 1 2015
12 0 0 0 13 1 2015
...
【问题讨论】:
-
V1、V1、V2三列的区别是什么?
-
@Peter V1、V2 和 V3 是三个不同的设备,每个设备都有自己的事件。所以结果将是三个时间序列,每个 V 一个。双 V1 是一个错字。
-
发布一个您希望输出的示例可能会有所帮助。
标签: python-3.x pandas numpy time-series