【问题标题】:Merge the dataframes dynamically动态合并数据框
【发布时间】:2022-01-26 19:51:29
【问题描述】:

我正在从 API 中提取数据以生成报告。但是每个报告的 API 数量是动态的。它可以是 1,2,3,5 等。一旦我们得到数据,我们需要将数据存储为数据帧,以生成所有数据帧中具有公共列的所需列的报告。

例如:

数据框1:

  emp_id  salary
1  5642    50k
2  7865    75k
3  9876    30k
4  1874    60k

数据框2:

  emp_id  Name   DOJ
1  5642   Jack  23DEC
2  9876   Sam   07APR

数据框3:

  emp_id  Designation    Status
1  5642    Developer    Available
2  7865    Testing      Available
3  9876     BA          Resigned
4  7590    Developer    Resigned
5  4765    Developer    Available

现在如何将这些数据存储到一个变量中,以便我们可以使用它们来使用 pandas 进行数据操作。由于 API url 的数量是动态的。

所需输出:

emp_id    Name   Designation   Status
1  5642   Jack    Developer   Available
2  7865   NAN    Testing      Available
3  9876   Sam      BA         Available
4  1874   NAN      NAN          NAN

【问题讨论】:

  • 输出中的salaryDOJ 列在哪里?
  • @mozway 连同 API,我们得到了需要在最终数据帧中的列名。
  • 这里没有对称操作。您在 df2 上执行外部合并,但在 df3 上执行内部合并。这需要以某种方式定义
  • @mozway 知道了。谢谢

标签: python pandas dataframe


【解决方案1】:

您可以使用reduce 函数。如果df_list 是您的数据框列表,那么您可以通过一个键合并任意数量的数据框,如下所示:

import pandas as pd
from functools import reduce
reduce(lambda x, y: pd.merge(x, y, on = 'emp_id'), df_list)

【讨论】:

  • 感谢您的回复。但是您的解决方案提供了 ID 5642 和 9876 的输出。其他两行将被跳过。
猜你喜欢
  • 2021-07-30
  • 2020-01-27
  • 1970-01-01
  • 2018-10-03
  • 2022-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多