Pandas中的嵌套合并(带有后缀)

12

我正在尝试在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,'_3'],逻辑是因为['_1', '_2']已经为之前的合并创建了唯一的列名。

2个回答

19

仅在合并的数据框中存在两个同名列时需要使用后缀。当合并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'})

4

你必须尝试这个

df = pd.merge(pd.merge(df1,df2,on='key', suffixes=[None,'_2']),df3,on='key',suffixes=['_1,'_3'])

这对我来说有效


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接