动机:
我有一个Nx3数据帧中存储的三维速度数据。我需要检测数据中的事件,并提取固定长度的epoch进行进一步分析。我想将检测到的epoch存储为DataFrame中的一个附加索引/列,并使用它在所有3个维度上获得epoch数据的紧凑的2d表示。我觉得这应该可以通过一些函数的组合来实现,比如df.stack
、df.unstack
、df.pivot
等等,但是我不知道怎么做。你知道吗
对于numpy数组,我可以使用数组中的2d索引来执行类似的操作
>>> arr = np.arange(30).reshape((10, 3))
>>> arr
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]])
>>> idx = np.array([[2, 5, 8],
[3, 6, 9]])
>>> np.concatenate(arr[idx].T).T
array([[ 6, 15, 24, 7, 16, 25, 8, 17, 26],
[ 9, 18, 27, 10, 19, 28, 11, 20, 29]])
有没有一个很好的方法可以在熊猫身上做类似的事情,从这样的数据帧开始
>>> df = pd.DataFrame(arr, columns=['X', 'Y', 'Z'])
>>> df.index = [NaN, NaN, 0, 0, NaN, 1, 1, NaN, 2, 2]
>>> df
X Y Z
NaN 0 1 2
NaN 3 4 5
0 6 7 8
0 9 10 11
NaN 12 13 14
1 15 16 17
1 18 19 20
NaN 21 22 23
2 24 25 26
2 27 28 29
像这样的事?你知道吗
X Y Z
0 1 2 0 1 2 0 1 2
0 6 15 24 7 16 25 8 17 26
1 9 18 27 10 19 28 11 20 29
当然,我可以用numpy完成所有的工作,并从结果中创建一个新的DataFrame,但是如果所有的索引/列标签都能自动排序,那就太好了。你知道吗
考虑以下方法:
或使用多索引:
相关问题 更多 >
编程相关推荐