[英]How to zip two lists of tuples by row?
I have two lists like so: 我有两个这样的列表:
list1 = [{'id':'1','id2':'2'},{'id':'2','id2':'3'}]
list2 = [{'fname':'a','lname':'b'},{'fname':'c','lname':'d'}]
How do I combine the lists into one set of tuples for a pandas dataframe? 如何将列表组合成一组pandas数据帧的元组?
like so: 像这样:
final_list = [{'id':'1','id2':'2','fname':'a','lname':'b'},{'id':'2','id2':'3','fname':'c','lname':'d'}]
the dataframe should look like this: 数据框应如下所示:
id id2 fname lname
1 2 a b
2 3 c d
tried this so far: 到目前为止试过这个:
final_list = list(zip(list1,list2))
df = pd.DataFrame(final_list)
df:
0 1
[{nested_data}] [{nested_data}]
You should do pd.concat . 你应该做pd.concat 。
As per the documentation, it seems that @jpp answer is better in terms of performance. 根据文档,似乎@jpp的答案在性能方面更好。 I'd be more inclined to believe a benchmark, but honestly, I trust the pandas documentation . 我更倾向于相信基准,但老实说,我相信熊猫文档 。
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
A "pure" Python answer (ie no Pandas): 一个“纯粹的”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'}]
Edited by Scott Boston 由斯科特波士顿编辑
pd.DataFrame([{**x[0], **x[1]} for x in zip(list1, list2)])
Output: 输出:
fname id id2 lname
0 a 1 2 b
1 c 2 3 d
You can just use pd.DataFrame.join
: 你可以使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.