创建一个唯一的指标,在​​pandas / python中连接两个数据集

时间:2017-08-01 20:59:42

标签: python pandas

如何在pandas / python中的数据框中组合四列来创建一个独特的指标并进行左连接?

这甚至是我想要完成的最佳方式吗?

example: make a unique indicator (col5)
then setup a join with another dataframe using the same logic
col1     col2      col3     col4    col5
apple    pear      mango    tea     applepearmangotea

然后进行类似

的加入
pd.merge(df1, df2, how='left', on='col5')

1 个答案:

答案 0 :(得分:0)

无论是4列还是2,这个问题都是一样的。您不需要创建唯一的组合键。您只需要在多列上merge

考虑两个数据框d1d2。他们共享两个共同的列。

d1 = pd.DataFrame([
    [0, 0, 'a', 'b'],
    [0, 1, 'c', 'd'],
    [1, 0, 'e', 'f'],
    [1, 1, 'g', 'h']
], columns=list('ABCD'))

d2 = pd.DataFrame([
    [0, 0, 'a', 'b'],
    [0, 1, 'c', 'd'],
    [1, 0, 'e', 'f'],
    [2, 0, 'g', 'h']
], columns=list('ABEF'))

d1

   A  B  C  D
0  0  0  a  b
1  0  1  c  d
2  1  0  e  f
3  1  1  g  h

d2

   A  B  E  F
0  0  0  a  b
1  0  1  c  d
2  1  0  e  f
3  2  0  g  h

我们可以使用pd.DataFrame.merge

执行左连接的等效操作
d1.merge(d2, 'left')

   A  B  C  D    E    F
0  0  0  a  b    a    b
1  0  1  c  d    c    d
2  1  0  e  f    e    f
3  1  1  g  h  NaN  NaN

我们可以明确列

d1.merge(d2, 'left', on=['A', 'B'])

   A  B  C  D    E    F
0  0  0  a  b    a    b
1  0  1  c  d    c    d
2  1  0  e  f    e    f
3  1  1  g  h  NaN  NaN