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

Python 如何按行压缩两个元组列表?,python,python-3.x,pandas,list,dataframe,Python,Python 3.x,Pandas,List,Dataframe,我有两张这样的清单: 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'

我有两张这样的清单:

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.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
你应该这样做

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

“纯”Python回答(即没有熊猫):

斯科特·波士顿编辑

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

到目前为止你试过什么?:)@IMCoins用我认为可以为未来用户改进的术语进行编辑。元组是一种内置的Python数据类型,在这个问题中不存在(你是指字典吗?还是指成对的数据结构?),这正是我要寻找的!为什么要像@jpp建议的那样使用concat vs join?@RustyShackleford,
concat
可以扩展到2个以上的数据帧。如果您只有2个数据帧,
concat
&
join
或多或少是等效的(
join
稍微快一点,但可能不会成为您的瓶颈)。请参阅我的编辑,但是的,他说的+我想说,如果您考虑性能,join会更好。感谢您的回答。将其包装在pd.DataFrame,
pd.DataFrame([{**x)中[0],**x[1]}对于zip中的x(列表1,列表2)])
您将获得OP预期的输出。
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