独立合并两列后如何创建新数据框?
How do I create a new dataframe after merging on two columns independently?
我有两个数据框,我希望合并后的结果数据框包含 n
列中左侧数据框的所有元素,如下所示:
df1:
a b
-- --- ---
0 a bb
1 aa c
2 b cc
3 bb aa
df2:
a b
-- --- ---
0 a e
1 aa d
2 b dd
3 bb ee
4 c a
5 cc d
6 d b
7 dd e
8 e aa
9 ee d
和预期的合并 datfarme 为:
merge:
a b
-- --- ---
0 a e
1 aa d
2 b dd
3 bb ee
4 c a
5 d b
6 e aa
我尝试过解决方案:
merge = df1.merge(df2, on=['a', 'b'], how='outer')
merge = df1.append(df2).drop_duplicates()
然而,它并没有产生预期的数据帧merge
如何在 pandas 中执行相同的操作?
merge
将包含 df2
中 df1
中存在的所有列值(vlookup 但行的各个值。因为 [=16= 的任一列中都有值] 出现在 df2
)
的任一列中
对不起,我没有用更好的措辞。如果您有任何疑问,我会尽力解释。
如果需要通过 df1
的任何列检查 df2
的任何列,请使用 DataFrame.isin
with flatten df1
by np.ravel
and filter by at least one value per row by DataFrame.any
in boolean indexing
:
merge = df2[df2.isin(np.ravel(df1)).any(axis=1)]
print (merge)
a b
0 a e
1 aa d
2 b dd
3 bb ee
4 c a
5 cc d
6 d b
8 e aa
如果需要指定列进行测试:
merge = df2[df2[['a','b']].isin(np.ravel(df1[['a','b']])).any(axis=1)]
我有两个数据框,我希望合并后的结果数据框包含 n
列中左侧数据框的所有元素,如下所示:
df1:
a b
-- --- ---
0 a bb
1 aa c
2 b cc
3 bb aa
df2:
a b
-- --- ---
0 a e
1 aa d
2 b dd
3 bb ee
4 c a
5 cc d
6 d b
7 dd e
8 e aa
9 ee d
和预期的合并 datfarme 为:
merge:
a b
-- --- ---
0 a e
1 aa d
2 b dd
3 bb ee
4 c a
5 d b
6 e aa
我尝试过解决方案:
merge = df1.merge(df2, on=['a', 'b'], how='outer')
merge = df1.append(df2).drop_duplicates()
然而,它并没有产生预期的数据帧merge
如何在 pandas 中执行相同的操作?
merge
将包含 df2
中 df1
中存在的所有列值(vlookup 但行的各个值。因为 [=16= 的任一列中都有值] 出现在 df2
)
对不起,我没有用更好的措辞。如果您有任何疑问,我会尽力解释。
如果需要通过 df1
的任何列检查 df2
的任何列,请使用 DataFrame.isin
with flatten df1
by np.ravel
and filter by at least one value per row by DataFrame.any
in boolean indexing
:
merge = df2[df2.isin(np.ravel(df1)).any(axis=1)]
print (merge)
a b
0 a e
1 aa d
2 b dd
3 bb ee
4 c a
5 cc d
6 d b
8 e aa
如果需要指定列进行测试:
merge = df2[df2[['a','b']].isin(np.ravel(df1[['a','b']])).any(axis=1)]