将包含整数列表的字符串列表转换为数组

问题描述 投票:0回答:2

我有一个系列,该列表是一个列表的列表,其中包含要尝试转换为数组的整数。这是我要转换为数组的列表的一个小片段。

['[0, 0, 0, 0, 0, 0, 0, 0, 0, 1]',

'[0, 0, 0, 0, 0, 0, 0, 0, 1, 0]',

'[0, 0, 0, 0, 0, 0, 0, 1, 0, 0]',

'[0, 0, 0, 0, 0, 0, 0, 1, 0, 1]',

'[0, 0, 0, 0, 0, 0, 0, 1, 1, 1]']

我已经尝试用.replace替换引号,但这还没有解决。

sequence = [i.replace(" '' ", ' ') for i in sequence]
python pandas
2个回答
2
投票

您可以使用ast.literal_eval将字符串更改为整数列表的列表

sequence = [literal_eval(i) for i in sequence]

# [[0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1, 1, 1]]

您可以将其更改为numpy数组

import numpy as np

array = np.asarray(sequence)
print(array)

输出

[[0 0 0 0 0 0 0 0 0 1]
 [0 0 0 0 0 0 0 0 1 0]
 [0 0 0 0 0 0 0 1 0 0]
 [0 0 0 0 0 0 0 1 0 1]
 [0 0 0 0 0 0 0 1 1 1]]

或至1d pandas数组

import pandas as pd

array = pd.array([item for items in sequence for item in items])
print(array)

outout

<IntegerArray>
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1]
Length: 50, dtype: Int64

0
投票

尝试:

import ast
[ast.literal_eval(s) for s in sequence]
© www.soinside.com 2019 - 2024. All rights reserved.