Matrix打印错误的尺寸

时间:2017-04-23 15:58:34

标签: python pandas dataframe

我正在从名为“OneHot”的数据框中读取一列。此列的每一行都具有[1,0]或[0,1]的值。我试图将这些值存储到变量中,以便我可以在神经网络中使用它。

问题: 当我将值读入变量时,它存储为(792824,1)而不是(792824,2)。 792824是数据帧中的行数。我尝试过重塑,但没有用。

这是我的代码:

    input_matrix = np.matrix(df['VectorTweet'].values.tolist())
​
In [157]:

    input_matrix = np.transpose(input_matrix)
    x_inputs = input_matrix.shape
    print x_inputs
(792824, 1)

In [160]:

    output_matrix = np.matrix(df['OneHot'].values.tolist())
    y_inputs = np.transpose(output_matrix)
    print y_outputs.shape
​
(792824, 1)

    print y_outputs[1]

[['[1, 0]']]

附件是我的数据框Example of my dataframe的摘录。

enter image description here

1 个答案:

答案 0 :(得分:0)

看起来OneHot中的每个条目都是列表的字符串表示形式。这就是你在转置中只获得一列的原因 - 你已经创建了一个整数列表字符串的单元素列表。您可以使用ast.literal_eval()将列表字符串转换为实际列表:

# OneHot as string of list of ints
strOneHot = pd.Series(['[0,1]','[1,0]'])

print(strOneHot.values)
# ['[0,1]' '[1,0]']

import ast
print(strOneHot.apply(ast.literal_eval).values)
# [[0, 1] [1, 0]]

FWIW,您可以使用.T对Pandas系列进行转置,如果这在此处有用的话:

strOneHot.apply(ast.literal_eval).T

输出:

0    [0, 1]
1    [1, 0]
dtype: object
相关问题