我正在从名为“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的摘录。
答案 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