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