首页 > 解决方案 > 数据框将两个表与现有数据连接起来

问题描述

想要基于加入相同dataframe(e)的只有记录,最终结果的记录只有三 dataframe(f)column"B"column"B"2,3,5,6,13,14*column"C" column"A" column"B" column"C"

Python代码

e = [[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0], [5.0, 6.0], [6.0, 7.0], [7.0, 8.0], [8.0, 9.0], [9.0, 10.0], [10.0, 11.0], [11.0, 12.0], [12.0, 13.0], [13.0, 14.0]]
f = [['2', '*'], ['3', '*'], ['5', '*'], ['6', '*'], ['13', '*'], ['14', '*']]
e = pd.DataFrame(e)
e.columns = ['A', 'B']
f = pd.DataFrame(f)
f.columns = ['B', 'C']
pd.concat([e,f], axis = 1, join="outer")

执行结果

    A   B   B   C
0   1.0 2.0 2   *
1   2.0 3.0 3   *
2   3.0 4.0 5   *
3   4.0 5.0 6   *
4   5.0 6.0 13  *
5   6.0 7.0 14  *
6   7.0 8.0 NaN NaN
7   8.0 9.0 NaN NaN
8   9.0 10.0    NaN NaN
9   10.0    11.0    NaN NaN
10  11.0    12.0    NaN NaN
11  12.0    13.0    NaN NaN
12  13.0    14.0    NaN NaN

预期结果

    A   B   C
0   1.0 2.0 NaN
1   2.0 3.0 NaN
2   3.0 4.0 *
3   4.0 5.0 *
4   5.0 6.0 NaN
5   6.0 7.0 *
6   7.0 8.0 *
7   8.0 9.0 NaN
8   9.0 10.0 NaN
9   10.0    11.0 NaN
10  11.0    12.0    NaN
11  12.0    13.0    *
12  13.0    14.0    *

标签: pythondataframe

解决方案


用于pd.merge()合并 column 上的数据框B。首先,我们必须将 dtype 设置f['B']float允许合并该列并给出您想要的结果:

f['B'] = f['B'].astype(float)

然后我们可以合并B

e.merge(f, how='outer', on='B')

输出:

一个 C
0 1.0 2.0 *
1 2.0 3.0 *
2 3.0 4.0
3 4.0 5.0 *
4 5.0 6.0 *
5 6.0 7.0
6 7.0 8.0
7 8.0 9.0
8 9.0 10.0
9 10.0 11.0
10 11.0 12.0
11 12.0 13.0 *
12 13.0 14.0 *

推荐阅读