Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅合并数据帧的某些列_Python_Pandas - Fatal编程技术网

Python 仅合并数据帧的某些列

Python 仅合并数据帧的某些列,python,pandas,Python,Pandas,我有一个熊猫数据框,看起来像这样: import pandas as pd d = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1], 'B': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 11]} df1 = pd.DataFrame(data=d) df1 A B 0 1 11 1 2 12 2 3 13 3 4 14 4 5 15 5 6 16 6

我有一个熊猫数据框,看起来像这样:

import pandas as pd
d = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1], 
     'B': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 11]}
df1 = pd.DataFrame(data=d)
df1

    A   B
0   1   11
1   2   12
2   3   13
3   4   14
4   5   15
5   6   16
6   7   17
7   8   18
8   9   19
9   10  20
10  1   11
import pandas as pd
d = {'C': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 
     'D': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
     'id': [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 ,39, 40]}
df2 = pd.DataFrame(data=d)
df2

    C   D   id
0   1   11  21
1   2   12  22
2   3   13  23
3   4   14  24
4   5   15  25
5   6   16  26
6   7   17  27
7   8   18  28
8   9   19  29
9   10  20  30
10  11  21  31
11  12  22  32
12  13  23  33
13  14  24  34
14  15  25  35
15  16  26  36
16  17  27  37
17  18  28  38
18  19  29  39
19  20  30  40
另一个数据帧如下所示:

import pandas as pd
d = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1], 
     'B': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 11]}
df1 = pd.DataFrame(data=d)
df1

    A   B
0   1   11
1   2   12
2   3   13
3   4   14
4   5   15
5   6   16
6   7   17
7   8   18
8   9   19
9   10  20
10  1   11
import pandas as pd
d = {'C': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 
     'D': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
     'id': [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 ,39, 40]}
df2 = pd.DataFrame(data=d)
df2

    C   D   id
0   1   11  21
1   2   12  22
2   3   13  23
3   4   14  24
4   5   15  25
5   6   16  26
6   7   17  27
7   8   18  28
8   9   19  29
9   10  20  30
10  11  21  31
11  12  22  32
12  13  23  33
13  14  24  34
14  15  25  35
15  16  26  36
16  17  27  37
17  18  28  38
18  19  29  39
19  20  30  40
我想根据
df1
中的
A
B
列以及
df2
中的
C
D
列,将
id
列从
df2
加入
df1
,如下所示:

    A   B   id
0   1   11  21
1   2   12  22
2   3   13  23
3   4   14  24
4   5   15  25
5   6   16  26
6   7   17  27
7   8   18  28
8   9   19  29
9   10  20  30
10  1   11  21
我希望通过运行下面的代码可以实现这一点。然而,正如所料,它给了我一个
键错误:“C”
。有没有更优雅的方法来实现这一点

df_merge = pd.merge(df1, df2['id'], left_on=['A', 'B'], right_on=['C', 'D'], how='left')

在列表中选择具有
id
的必要列,并使用
rename

d= {'C':'A','D':'B'}
df_merge = pd.merge(df1, df2[['id', 'C', 'D']].rename(columns=d), on=['A', 'B'], how='left')
在解决方案中,使用列表,然后删除列
C、D

df_merge = (pd.merge(df1, df2[['id', 'C', 'D']], 
                   left_on=['A', 'B'], right_on=['C', 'D'], how='left')
              .drop(['C','D'], axis=1))