将二维数组转换为两列数据框pandas

2024-05-17 08:21:52 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有以下内容,如何使pd.DataFrame()将此数组转换为具有两列的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()是一个列表还是一个序列。当您从列表中创建数据帧时,它会将项目合并到同一列中。名单上没有。以最有效的方式解决了我的问题。


Tags: columns数据方法lambdamapdataframenlnr
2条回答

要升级@unutbu answer,因为我认为由于此参数,代码将无法工作:

columns=list('xy')

所以我认为这应该是一个错误的论点:

pd.DataFrame(clean_data, columns=['x', 'y'])

取自官方docs

In [172]: data = [[u'294 (24%) L', u'294 (26%) R'],  [u'981 (71%) L', u'981 (82%) R'],]

In [173]: clean_data = [[int(item.split()[0]) for item in row] for row in data]

In [174]: clean_data
Out[174]: [[294, 294], [981, 981]]

In [175]: pd.DataFrame(clean_data, columns=list('xy'))
Out[175]: 
     x    y
0  294  294
1  981  981

[2 rows x 2 columns]

相关问题 更多 >