将一个二维数组转换成 Pandas 两列数据框

13

如果我有以下内容,如何使pd.DataFrame()将此数组转换为具有两列的数据框。最有效的方法是什么?我的当前方法涉及将每个副本复制到一个系列中,并从它们创建数据框。

从这个开始:

([[u'294 (24%) L', u'294 (26%) R'],
  [u'981 (71%) L', u'981 (82%) R'],])
x    y
294  294
981  981

而不是

x
[u'294 (24%) L', u'294 (26%) R']

我目前的方法。正在寻找更高效的方法。

numL = pd.Series(numlist).map(lambda x: x[0])
    numR = pd.Series(numlist).map(lambda x: x[1])

    nL = pd.DataFrame(numL, columns=['left_num'])
    nR = pd.DataFrame(numR, columns=['right_num'])

    nLR = nL.join(nR)

    nLR

更新**

我注意到我的错误在于将列表与序列pd.DataFrame()时的区别。当你从列表创建一个数据框时,它会将项目合并到同一列中,而使用序列则不然。这是以最有效的方式解决了我的问题。

1个回答

15
data = [[u'294 (24%) L', u'294 (26%) R'],  [u'981 (71%) L', u'981 (82%) R'],]
    
clean_data = [[int(item.split()[0]) for item in row] for row in data]

# clean_data: [[294, 294], [981, 981]]
    
pd.DataFrame(clean_data, columns=list('xy'))

#         x    y
#    0  294  294
#    1  981  981
#
#    [2 rows x 2 columns]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接