如何按行压缩两个元组列表



我有两个这样的列表:

list1 = [{'id':'1','id2':'2'},{'id':'2','id2':'3'}]
list2 = [{'fname':'a','lname':'b'},{'fname':'c','lname':'d'}]

如何将列表合并到一组熊猫数据帧的元组中?

这样:

final_list = [{'id':'1','id2':'2','fname':'a','lname':'b'},{'id':'2','id2':'3','fname':'c','lname':'d'}]

数据帧应如下所示:

id     id2      fname     lname
1       2         a          b
2       3         c          d 

到目前为止尝试过这个:

final_list = list(zip(list1,list2))
df = pd.DataFrame(final_list)
df:
0                          1
[{nested_data}]          [{nested_data}]

你应该做 pd.concat。

根据文档,似乎@jpp答案在性能方面更好。我更倾向于相信基准,但老实说,我相信熊猫文档。

import pandas as pd
df = pd.DataFrame(list1)
df2 = pd.DataFrame(list2)
result_df = pd.concat([df, df2], axis=1)
#result_df
#  id id2 fname lname
#0  1   2     a     b
#1  2   3     c     d

一个"纯"的Python答案(即没有Pandas):

[{**x[0], **x[1]} for x in zip(list1, list2)]
> [{'id': '1', 'id2': '2', 'fname': 'a', 'lname': 'b'},
    {'id': '2', 'id2': '3', 'fname': 'c', 'lname': 'd'}]

由斯科特·波士顿编辑

pd.DataFrame([{**x[0], **x[1]} for x in zip(list1, list2)])

输出:

  fname id id2 lname
0     a  1   2     b
1     c  2   3     d
你可以

只使用pd.DataFrame.join

df = pd.DataFrame(list1).join(pd.DataFrame(list2))
print(df)
  id id2 fname lname
0  1   2     a     b
1  2   3     c     d

最新更新