【问题标题】:How to zip two lists of tuples by row?如何按行压缩两个元组列表?
【发布时间】:2019-06-16 00:58:39
【问题描述】:

我有两个这样的列表:

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

如何将列表组合成一组用于 pandas 数据框的元组?

像这样:

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}]

【问题讨论】:

  • 到目前为止你有什么尝试? :)
  • @IMCoins 用我尝试的方法进行了编辑
  • 我认为问题中的术语可以为未来的用户改进。元组是一种内置的 Python 数据类型,在这个问题中不存在(您是指字典吗?还是您指的是配对数据结构?)

标签: python python-3.x pandas list dataframe


【解决方案1】:

你应该这样做pd.concat

根据文档,@jpp 的答案似乎在性能方面更好。我更倾向于相信基准,但老实说,我相信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

【讨论】:

  • 为什么按照@jpp 的建议使用 concat vs join?
  • @RustyShackleford, concat 可扩展为超过 2 个数据帧。如果您只有 2 个数据帧,concatjoin 或多或少是等效的(join 稍微快一点,但可能不会成为您的瓶颈)。
  • 查看我的编辑,但是是的,他说的 + 我会说如果你追求性能,加入会更好。
【解决方案2】:

“纯”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'}]

由 Scott Boston 编辑

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, pd.DataFrame([{**x[0], **x[1]} for x in zip(list1, list2)]) 中,您将获得 OP 预期输出。
【解决方案3】:

你可以使用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

【讨论】:

  • 正是我想要的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 2015-11-04
  • 2023-02-04
  • 2011-11-20
  • 1970-01-01
  • 2014-08-26
相关资源
最近更新 更多