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

13 投票
1 回答
43047 浏览
提问于 2025-04-18 05:28

如果我有以下内容,我该如何让 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]

撰写回答