我有一个像这样的pandas数据框:
time 000010 000017 000033 000034 000041 000042 \
0 672.246427 NaN NaN NaN 122.812927 367.110779 75.933125
1 672.253247 NaN NaN NaN 126.228996 372.775421 78.117798
2 672.260270 NaN NaN NaN 126.909046 369.460754 77.109196
3 672.267205 NaN NaN NaN 129.729416 376.499878 76.996864
4 672.274120 NaN NaN NaN 126.082420 380.343506 76.199158
5 672.281085 NaN NaN NaN 127.412136 387.227203 78.589165
6 672.288012 NaN NaN NaN 131.672180 394.507355 83.319740
7 672.294974 NaN NaN NaN 128.294861 390.472992 78.814026
8 672.301931 NaN NaN NaN 134.104858 393.601486 82.421974
9 672.308877 NaN NaN NaN 119.213364 393.934875 80.444237
10 672.315816 NaN NaN NaN 126.745148 378.437531 79.340736
11 672.322750 NaN NaN NaN 114.940750 367.477142 76.719002
12 672.329622 NaN NaN NaN 118.000877 364.089691 74.932938
我打算使用模块' tsfresh'提取功能。编号的列标题是对象ID,时间列是时间系列。
此数据框称为“数据”。所以我试图使用提取功能命令:
extracted_features = extract_features(data, column_id = objs[1:], column_sort = "time")
其中objs [1:]这里是列标题右侧的对象ID"时间"。
这出错了'具有多个元素的数组的真值是不明确的,但任何人都可以帮助我完成这项工作并提取一个漂亮的pandas数据框的功能吗?
非常感谢提前!
答案 0 :(得分:2)
也许我误解了你的问题,但是(当我理解你的时候),你需要在表格中重新排序你的数据框,tsfresh可以理解它。
column_id
假定(顾名思义)带有ID列的列名称 - 您没有。如果我看到这个正确,你只有6个不同的ID(000010,000017,000033,000034,000041,000042),每个ID只有一种13个时间序列值(让我们称之为data
)。所以tsfresh希望有一个数据帧,看起来像
id kind value time
000034 data 122.812927 672.246427
...
000041 data 367.110779 672.246427
...
然后您可以使用
将其提供给tsfreshextract_features(df, column_id="id", column_kind="kind",
column_value="value", column_sort="time")
另外,你需要摆脱NaN列(因为tsfresh不知道如何处理它们)。
请查看我们关于数据格式的文档:http://tsfresh.readthedocs.io/en/latest/text/data_formats.html