在pandas数据框中将列表转换为numpy数组

时间:2018-09-21 11:22:40

标签: python pandas numpy

我们有一个数据框,其中一列的元素是列表(讨论不是关于是否应该这样做)。一个简单的例子如下:

df = pd.DataFrame([[12,[123,234,234]], [14,[124,25,235]], [16,[1267,267,2345]]], columns = ['A', 'B'])

获取:

enter image description here

此处的目标是将列 B 转换为numpy数组,如下所示:

enter image description here

如果我要求熊猫将列转换为数组:

df['B'].values

它返回一个列表数组,与上面的列表不同:

array([list([123, 234, 234]), list([124, 25, 235]),
   list([1267, 267, 2345])], dtype=object)

我们如何解决问题?

1 个答案:

答案 0 :(得分:1)

如果列表的长度始终可以相同,则创建嵌套列表,然后转换为np.array

arr = np.array(df['B'].values.tolist())
#alternative
#arr = np.array(df['B'].tolist())
print (arr)
[[ 123  234  234]
 [ 124   25  235]
 [1267  267 2345]]