将二维数组转换为两列表格数据框 pandas
如果我有以下内容,我该如何让 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]