我有一个 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 特征数据框吗?
提前非常感谢!
也许我误解了你的问题,但如果我理解正确,你需要以表单重新排序你的数据框,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
...
然后您可以使用以下方法将其输入 tsfresh:
extract_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