我有一个数据框,其中 python 读取每行中 str 类型的列。但它实际上是一个列表或数组。我想如何从 str 格式获取数组?
我已经尝试拆分函数,但它给出了奇怪的输出。
由于声誉较低,我无法发布图片
可以说这是我的数据框(不是实际数据)
df = pd.DataFrame({'Weight':[str([45, 88, 56]), str([15, 71, 62])],
'Name':[str(['Sam', 'Andrea', 'Alex']), str(['Robin', 'Kia', 'Lina'])],
'Age':[str([14, 25, 55]), str([8, 21, 30])]})
如果我们检查第一行和第一列的格式是 str 格式
type(df['Weight'][0])
>> str
如果我们使用 split 函数,我得到,
pd.DataFrame(np.column_stack((df['Weight'][0].split(), df['Age'][0].split())))
>> array([['[45,', '[14,'],
['88,', '25,'],
['56]', '55]']], dtype='<U4')
我的预期输出是能够获得数组。
array([45, 88, 56], dtype=int64)
我还是Python新手。它已经在 python 中内置了任何最快的函数,而不是我需要将 [ , ]
替换为 null。
最佳答案
也许你可以尝试这种方式,通过使用ast模块
,将字符串放入一个列表并将列表设置到np.array中。
import ast
df = pd.DataFrame({'Weight':[str([45, 88, 56]), str([15, 71, 62])],
'Name':[str(['Sam', 'Andrea', 'Alex']), str(['Robin', 'Kia', 'Lina'])],
'Age':[str([14, 25, 55]), str([8, 21, 30])]})
a = np.array(ast.literal_eval(df['Weight'][0]))
b = np.array(ast.literal_eval(df['Age'][0]))
pd.DataFrame(np.column_stack((a, b)))
关于python - 如何从数据帧中获取数组或列表(其中 python 读取为 str 格式类型)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413950/