擅长:python、mysql、java
<p>这应该行得通,尽管承认这有点沉重。不过,您可以在<code>on</code>参数中为<code>merge</code>定义任意数量的列(当然,前提是这些列都在这两个数据集中)。在</p>
<pre><code># Rows that are in this df should be removed from df2
# The first two rows are in both dfs, the third isn't.
df1 = pd.DataFrame({
'name': ['foo', 'bar', 'bak'],
'age': [22, 50, 30]
})
df2 = pd.DataFrame({
'name': ['foo', 'bar', 'baz', 'bar'],
'age': [22, 50, 30, 10]
})
df1['is_in_first_df'] = True
# Select the necessary columns and merge both dfs using an outer join
# so that rows that are in df2 but not df1 aren't lost.
df2_ = pd.merge(df2, df1, on=['age', 'name'], how='outer').fillna(False)
# Now just remove all those rows from df2 and remove the flag column
df2_[~df2_.is_in_first_df].drop('is_in_first_col', axis=1)
</code></pre>