在pandas/python中,如何在给定条件下将多个数据帧obj合并为单个数据帧obj

在pandas/python中,如何在给定条件下将多个数据帧obj合并为单个数据帧obj,python,json,python-3.x,pandas,dataframe,Python,Json,Python 3.x,Pandas,Dataframe,我发送给python后端服务的POST请求如下所示 { "updated_by": "969823826", "relation_on": "ID", "join_type": "inner", "sources": [ { "json_obj": "path/demo8.json", "columns": [ "ID", "FIRST_NAME", "

我发送给python后端服务的POST请求如下所示

{
    "updated_by": "969823826",
    "relation_on": "ID",
    "join_type": "inner",
    "sources": [
    {
        "json_obj": "path/demo8.json",
        "columns": [
            "ID",
            "FIRST_NAME",
            "LAST_NAME"
        ]
    },
    {
        "json_obj": "path/demo1.json",
        "columns": [
            "ID",
            "CITY",
            "SSN"
        ]
    }
  ]
}
因此,我尝试合并为内部,并基于ID列连接两个源对象

我正在将FILE1中的ID、名、姓与ID、CITY、SSNFILE2合并

通过使用静态方法,我能够做到这一点

这是我的静态方法代码示例

import json
import pandas as pd

file1 = "path\\demo1.json"
file2 = "path\\demo3.json"

df1 = pd.read_json(file1)
df2 = pd.read_json(file2)

#merge with specific columns and conditions
new_df = pd.merge(df1[['ID', 'FIRST_NAME', 'LAST_NAME']], df2[['ID', 'CITY', 'SSN']], on='ID', how="inner")   

#merging without any common column
df1['tmp'] = 1
df2['tmp'] = 1     

new_df = pd.merge(df1, df2, on=['tmp'])
new_df = new_df.drop('tmp', axis=1)

new_df.to_json("path\\merge-json.json", orient='records')
updated_by = request.get_json()['updated_by']
relation_on = request.get_json()['relation_on']
join_type = request.get_json()['join_type']

sources = request.get_json()['sources']
sources = str(sources).replace("'", '"')
sources = json.loads(sources)

for sources_key, sources_value in enumerate(sources):
    print(sources_key, sources_value)
现在,如果我想使用for循环以动态方式合并数据帧,我会遇到一些麻烦

我尝试了几种选择,但我认为我走的方向不对

这是动态方法的代码

import json
import pandas as pd

file1 = "path\\demo1.json"
file2 = "path\\demo3.json"

df1 = pd.read_json(file1)
df2 = pd.read_json(file2)

#merge with specific columns and conditions
new_df = pd.merge(df1[['ID', 'FIRST_NAME', 'LAST_NAME']], df2[['ID', 'CITY', 'SSN']], on='ID', how="inner")   

#merging without any common column
df1['tmp'] = 1
df2['tmp'] = 1     

new_df = pd.merge(df1, df2, on=['tmp'])
new_df = new_df.drop('tmp', axis=1)

new_df.to_json("path\\merge-json.json", orient='records')
updated_by = request.get_json()['updated_by']
relation_on = request.get_json()['relation_on']
join_type = request.get_json()['join_type']

sources = request.get_json()['sources']
sources = str(sources).replace("'", '"')
sources = json.loads(sources)

for sources_key, sources_value in enumerate(sources):
    print(sources_key, sources_value)
到目前为止,对于上面的代码,它正在执行,我可以如下所示查看对象

0 {'ctl_key': '969823826demo8txt', 'json_obj': 'path/demo8.json', 'columns': ['ID', 'FIRST_NAME', 'LAST_NAME']}
1 {'ctl_key': '969823826demo1csv', 'json_obj': 'path/demo1.json', 'columns': ['ID', 'CITY', 'SSN']}
现在,我最初的方法是基于文件输入创建新的数据帧,然后合并这两个数据帧并创建最后一个

需要一个JSON obj作为输出,如下所示,

[
  {
    "ID": 1,
    "FIRST_NAME": "Albertine",
    "LAST_NAME": "Jan",
    "CITY": "Waymill",
    "SSN": "515-72-7353"
  },
  {
    "ID": 2,
    "FIRST_NAME": "Maryetta",
    "LAST_NAME": "Hoyt",
    "CITY": "Spellbridge",
    "SSN": "515-72-7354"
  },
  {
    "ID": 3,
    "FIRST_NAME": "Dustin",
    "LAST_NAME": "Divina",
    "CITY": "Stoneland",
    "SSN": "515-72-7355"
  },
  {
    "ID": 4,
    "FIRST_NAME": "Jenna",
    "LAST_NAME": "Sofia",
    "CITY": "Fayview",
    "SSN": "515-72-7356"
  }
]

任何人有任何指导原则,请…

当我加入外部数据帧时,我喜欢使用
pd。将索引设置为我想要加入的列,然后使用
pd.concat([df1,df2],axis=1)

我认为这应该适用于本案

所需的输出是什么?@vbr我已经编辑了摘要,包括所需的输出。您有“ID”列,那么为什么不在该列上合并?是的,我有一个公共列。。我可以根据给定的条件合并这两个文件。。但是,我们可以用静态的方式来做。。我还附上了代码。。访问JSON请求并使用循环生成数据帧时遇到问题。。附言:我是新加入Pythonrefarding的,我没有面临任何问题。。我的问题是如何从post请求中迭代必要的对象并动态创建数据帧。。