Python 带后缀的pandas中的嵌套合并

Python 带后缀的pandas中的嵌套合并,python,pandas,Python,Pandas,我正在尝试合并pandas中的多个数据帧,并在生成的数据帧中保持列标签笔直。下面是我的测试用例: import pandas as pd df1 = pd.DataFrame(data = [[1,1],[3,1],[5,1]], columns = ['key','val']) df2 = pd.DataFrame(data = [[1,2],[3,2],[7,2]], columns = ['key','val']) df3 = pd.DataFrame(data = [[1,3],[2,3

我正在尝试合并pandas中的多个数据帧,并在生成的数据帧中保持列标签笔直。下面是我的测试用例:

import pandas as pd
df1 = pd.DataFrame(data = [[1,1],[3,1],[5,1]], columns = ['key','val'])
df2 = pd.DataFrame(data = [[1,2],[3,2],[7,2]], columns = ['key','val'])
df3 = pd.DataFrame(data = [[1,3],[2,3],[4,3]], columns = ['key','val'])
df = pd.merge(pd.merge(df1,df2,on='key', suffixes=['_1','_2']),df3,on='key',suffixes=[None,'_3'])
我明白了:

df =
     key    val_1   val_2   val
0     1       1      2       3
我想看看这个:

df =
     key    val_1   val_2   val_3
0     1       1      2       3

我指定的最后一对后缀是:
[None,''u 3']
,逻辑是这对后缀为上一次合并创建了唯一的列名。

仅当合并的数据帧有两个同名列时才需要后缀。合并df3时,数据帧的列名为val_1和val_2,因此没有重叠。 您可以通过如下方式将val重命名为val_3来处理此问题

df = df1.merge(df2, on = 'key', suffixes=['_1','_2']).merge(df3, on = 'key').rename(columns = {'val': 'val_3'})

你得试试这个

df = pd.merge(pd.merge(df1,df2,on='key', suffixes=[None,'_2']),df3,on='key',suffixes=['_1,'_3'])
这是我的工作