为了账号安全,请及时绑定邮箱和手机立即绑定

如何将来自多个字典的数据合并到 DataFrame 中的单行中

如何将来自多个字典的数据合并到 DataFrame 中的单行中

智慧大石 2022-01-11 19:44:54
我想将几个具有相同键的字典合并在一起,而不删除任何键/值对并转换为DataFrame.我试过了dict.update(),但它用重复键的新值替换了以前的值。dict3[1]{'DB': 'M', 'TITLE': 'ACM Journal of Computer Documentation ', 'ISSN': '1527-6805', 'e-ISSN': '1557-9441', 'ISBN': nan, 'e-ISBN': nan}dict4[0]{'DB': 'D', 'TITLE': 'ACM Computing Surveys ', 'ISSN': '0360-0300', 'e-ISSN': '1557-7341', 'ISBN': nan, 'e-ISBN': nan}我希望结果将所有键保留在同一行中,无论值是相同还是不同,尽管它们是重叠键。该表应如下所示:   DB      TITLE         ISSN      e-ISSN  ...    DB     TITLE        ISSN ...0   M   ACM Journal... 1527-6805  1557-9441  ...   D  ACM Comput... 0360-0300...
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

您可以连接每个 dict 的键以表示您的行列,然后将每个 dict 的值连接成一行(DataFrame作为嵌套 dict传递给构造函数以创建一行而不是单列)。例如:


import pandas as pd


nan = float('nan')

d1 = {'DB': 'M', 'TITLE': 'ACM Journal of Computer Documentation', 'ISSN': '1527-6805', 'e-ISSN': '1557-9441', 'ISBN': nan, 'e-ISBN': nan}

d2 = {'DB': 'D', 'TITLE': 'ACM Computing Surveys', 'ISSN': '0360-0300', 'e-ISSN': '1557-7341', 'ISBN': nan, 'e-ISBN': nan}


columns = [*d1.keys(), *d2.keys()]

row = [*d1.values(), *d2.values()]

df = pd.DataFrame([row], columns=columns)

print(df)

#   DB                                  TITLE  ...  DB                  TITLE

# 0  M  ACM Journal of Computer Documentation  ...   D  ACM Computing Surveys

您可以创建一个简单的函数,DataFrame使用相同的基本方法将任意数量的字典转换为单行。例如:


def dicts_to_single_row_df(*args):

    columns = [k for d in args for k in d.keys()]

    row = [v for d in args for v in d.values()]

    return pd.DataFrame([row], columns=columns)


df = dicts_to_single_row_df(d1, d2)


查看完整回答
反对 回复 2022-01-11
  • 1 回答
  • 0 关注
  • 572 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信