在python中合并for循环中的数据帧

在python中合并for循环中的数据帧,python,pandas,Python,Pandas,我正在检查文件夹中的文件,我想根据名为key的变量合并数据集。这是我到目前为止的代码。我举了一个例子,说明数据集可能是什么样的/我期望最终结果是什么样的: dfs=[] for f in files: for name, sheet in sheets_dict.items(): if name=="Main": data = sheet dfs.append(data) dfs示例: df1 =

我正在检查文件夹中的文件,我想根据名为key的变量合并数据集。这是我到目前为止的代码。我举了一个例子,说明数据集可能是什么样的/我期望最终结果是什么样的:

dfs=[]
for f in files:   
    for name, sheet in sheets_dict.items():
        if name=="Main":
            data = sheet
            dfs.append(data)
dfs示例:

df1 = {'key': ["A","B"], 'Answer':["yes","No"]}
df1 = pd.DataFrame(data=df1)

df2={'key': ["A","C"], 'Answer':["No","c"]}
df2 = pd.DataFrame(data=df2)
最终产量

final={'A': ["yes","No"], 'B':["No",""],'C':["","c"],'file':['df1','df2']}
final = pd.DataFrame(data=final)
这是我尝试过的,但我无法实现:

df_key={'key': ["A","B","C"]}
df_key = pd.DataFrame(data=df_key)

df_final=[]
for df in dfs:
    temp= pd.merge(df_key[['key']],df, on=['key'], how = 'left')
    temp_t= temp.transpose()
df_final.append(temp_t)

重塑和连接数据帧非常简单。但是为了添加
文件
值,您需要a)在字符串列表中包含数据帧的名称,或者b)在执行过程中生成新名称

这是密码

dfs = [df1, df2] # populate dfs as needed

master_df = []
df_key = {'key': ["A","B","C"]}
df_key = pd.DataFrame(df_key) # assuming you already have this dataframe created
master_df.append(pd.Series(index=df_key.columns))

for i, df in enumerate(dfs):
    df = df.set_index('key').squeeze()
    df.loc['file'] = f'df{i+1}'
    master_df.append(df)

# or iterate the dfs alongside their file names
# for fname, df in zip(file_names, dfs):
    # df = df.set_index('key').squeeze()
    # df.loc['file'] = fname
    # master_df.append(df)

master_df = pd.concat(master_df, axis=1).T

# rearrange columns
master_df = master_df[
    master_df.columns.difference(['file']).to_list() + ['file']
]

# fill NaNs with empty string
master_df.fillna('', inplace=True)
输出

          A   B  C file
Answer  yes  No     df1
Answer   No      c  df2

谢谢,这是可行的,但是我如何在其中合并df_键,因为这应该是所有这些df应该具有的所有列?