首页 > 解决方案 > numpy 数组到数据框,反之亦然

问题描述

我是python的菜鸟!

  1. 我想像这样将序列和异常放在一起: 序列和异常

  2. 并且只对正常序列进行排序。(如果异常列的值为0,则为正常序列)

  3. 将正常序列转换为 numpy 数组(没有异常列)

每行(序列)是一个会话。所以在这种情况下,它们是 6 个独立的序列。每个元素代表一些特定的活动。

'''

sequence = np.array([[5, 1, 1, 0, 0, 0],
       [5, 1, 1, 0, 0, 0],
       [5, 1, 1, 0, 0, 0],
       [5, 1, 1, 0, 0, 0],
       [5, 1, 1, 0, 0, 0],
       [5, 1, 1, 300, 200, 100]])

anomaly = np.array((0,0,0,0,0,1))

''' 我得到了这两个变量,并且只需要对正常序列进行排序。

这是我尝试过的代码:'''

# sequence to dataframe
empty_df = pd.DataFrame(columns = ['Sequence'])
empty_df.reset_index()

for i in range(sequence.shape[0]):
  empty_df = empty_df.append({"Sequence":sequence[i]},ignore_index = True) #

#concat anomaly

anomaly_df = pd.DataFrame(anomaly)
df = pd.concat([empty_df,anomaly_df],axis = 1)
df.columns = ['Sequence','anomaly']
df

'''

我不想使用 pd.DataFrame 因为它给了我这个:

pd.DataFrame(sequence)

在此处输入图像描述

无论如何,在制作df之后,我尝试对正常序列进行排序

#sorting normal seq

normal = df[df['anomaly'] == 0]['Sequence'] 
# back to numpy. only sequence column.
normal = normal.to_numpy()
normal.shape

''' 这个 numpy 给了我与变量序列不同的形状1。sequence.shape: (6,6) normal.shape =(5,)

我想要(5,6)。尝试重塑但没有用..有人可以帮我吗?如果我的问题有任何不具体的解释,请发表评论。我很感激。

标签: pandasnumpy

解决方案


我不太确定您需要什么,但在这里您可以执行以下操作:

import pandas as pd
df = pd.DataFrame({'sequence':sequence.tolist(), 'anomaly':anomaly})
df

                  sequence  anomaly
0        [5, 1, 1, 0, 0, 0]        0
1        [5, 1, 1, 0, 0, 0]        0
2        [5, 1, 1, 0, 0, 0]        0
3        [5, 1, 1, 0, 0, 0]        0
4        [5, 1, 1, 0, 0, 0]        0
5  [5, 1, 1, 300, 200, 100]        1

推荐阅读