是否可以创建一个唯一的 ID 以在时间序列中重复测量 类?
Is it possible to create a unique ID for repeatedly measuring classes in a time-series?
我有一个包含 7 个不同阀门 (solenoid vales
) 的 24 小时时间序列的 csv 文件,这些阀门每 10 分钟更改一次(阀门 1、2、3、4、5、6、1、2 ,3,4,5,6,7 然后再从 1 开始)。我想为每次阀门测量 (1,2,3,4,5,6,7,8,9,10,11,12,13...) 分配一个唯一的 Measurement ID
,这样我可以在后续步骤中提取每个测量间隔的最后 10 秒(= 行)。
pandas 这个理论是否可行?我试图找到一个我可以应用的功能,但没有成功。
我已经从我的 pandas 数据帧中提取了这个 df
df=pd.read_csv(file)
Out[61]:
DATE_TIME solenoid_valves N2O CH4 CO2_ppm
0 10/08/2016 12:04:56 7.000000 0.272953 1.810904 NaN
....
8740 10/08/2016 14:30:36 2.000000 0.349828 29.527575 352.32
8741 10/08/2016 14:30:37 NaN NaN NaN 352.61
8742 10/08/2016 14:30:38 2.000000 0.349729 29.508612 352.12
8743 10/08/2016 14:30:39 2.000000 0.349655 29.501180 352.88
8744 10/08/2016 14:30:40 2.200969 0.349388 29.492402 353.16
8745 10/08/2016 14:30:41 2.600484 0.347622 29.483979 352.44
8746 10/08/2016 14:30:42 3.000000 0.341632 29.476394 352.96
...
56512 11/08/2016 3:46:48 3.000000 0.300992 8.988894 420.42
56513 11/08/2016 3:46:49 3.000000 0.304847 8.990150 420.60
56514 11/08/2016 3:46:50 3.143836 0.302620 8.991343 420.89
56515 11/08/2016 3:46:51 4.000000 0.295150 8.992416 421.90
56516 11/08/2016 3:46:52 4.000000 0.286783 8.993618 421.90
56517 11/08/2016 3:46:53 4.000000 0.285636 8.994677 421.57
56518 11/08/2016 3:46:54 NaN NaN NaN 422.47
56519 11/08/2016 3:46:55 4.000000 0.276346 8.993526 422.75
56520 11/08/2016 3:46:56 4.000000 0.277580 8.992645 423.02
我确定了以下挑战:
- 当阀门切换时(参见行 8744,8745 或 56514),一个或多个阀门编号往往具有十进制数字。我想排除那些,我必须先删除它们吗?
- 某些行包含缺失值 (
NaN
),应忽略这些值。
我不太确定,如果我想要的是可能的,但它会彻底改变我的数据分析,所以任何输入都将不胜感激!
要删除任何包含缺失值的行:
df = df.dropna()
然后,通过将列与其转换为整数的值进行比较来仅保留整数:
df = df[df.solenoid_valves == df.solenoid_valves.astype(int)]
我有一个包含 7 个不同阀门 (solenoid vales
) 的 24 小时时间序列的 csv 文件,这些阀门每 10 分钟更改一次(阀门 1、2、3、4、5、6、1、2 ,3,4,5,6,7 然后再从 1 开始)。我想为每次阀门测量 (1,2,3,4,5,6,7,8,9,10,11,12,13...) 分配一个唯一的 Measurement ID
,这样我可以在后续步骤中提取每个测量间隔的最后 10 秒(= 行)。
pandas 这个理论是否可行?我试图找到一个我可以应用的功能,但没有成功。
我已经从我的 pandas 数据帧中提取了这个 df
df=pd.read_csv(file)
Out[61]:
DATE_TIME solenoid_valves N2O CH4 CO2_ppm
0 10/08/2016 12:04:56 7.000000 0.272953 1.810904 NaN
....
8740 10/08/2016 14:30:36 2.000000 0.349828 29.527575 352.32
8741 10/08/2016 14:30:37 NaN NaN NaN 352.61
8742 10/08/2016 14:30:38 2.000000 0.349729 29.508612 352.12
8743 10/08/2016 14:30:39 2.000000 0.349655 29.501180 352.88
8744 10/08/2016 14:30:40 2.200969 0.349388 29.492402 353.16
8745 10/08/2016 14:30:41 2.600484 0.347622 29.483979 352.44
8746 10/08/2016 14:30:42 3.000000 0.341632 29.476394 352.96
...
56512 11/08/2016 3:46:48 3.000000 0.300992 8.988894 420.42
56513 11/08/2016 3:46:49 3.000000 0.304847 8.990150 420.60
56514 11/08/2016 3:46:50 3.143836 0.302620 8.991343 420.89
56515 11/08/2016 3:46:51 4.000000 0.295150 8.992416 421.90
56516 11/08/2016 3:46:52 4.000000 0.286783 8.993618 421.90
56517 11/08/2016 3:46:53 4.000000 0.285636 8.994677 421.57
56518 11/08/2016 3:46:54 NaN NaN NaN 422.47
56519 11/08/2016 3:46:55 4.000000 0.276346 8.993526 422.75
56520 11/08/2016 3:46:56 4.000000 0.277580 8.992645 423.02
我确定了以下挑战:
- 当阀门切换时(参见行 8744,8745 或 56514),一个或多个阀门编号往往具有十进制数字。我想排除那些,我必须先删除它们吗?
- 某些行包含缺失值 (
NaN
),应忽略这些值。
我不太确定,如果我想要的是可能的,但它会彻底改变我的数据分析,所以任何输入都将不胜感激!
要删除任何包含缺失值的行:
df = df.dropna()
然后,通过将列与其转换为整数的值进行比较来仅保留整数:
df = df[df.solenoid_valves == df.solenoid_valves.astype(int)]