我有两个数据集。下面您可以看到代码和数据
import pandas as pd
import numpy as np
pd.set_option('max_columns', None)
import matplotlib.pyplot as plt
data = {'type_sale': ['group_1','group_2','group_3','group_4','group_5','group_6','group_7','group_8','group_9','group_10'],
'id':[70,20,24,80,20,20,60,20,20,20],
}
df1 = pd.DataFrame(data, columns = ['type_sale',
'id',])
data = {'type_sale': ['group_1','group_2','group_3'],
'id':[70,20,24],
}
df2 = pd.DataFrame(data, columns = ['type_sale',
'id',])
这些代码创建了两个数据集,如下所示:
现在我想创建一个新的数据集 df3,其中 df1 中的值与 id
列中的值 df2 不同(不同的值)。
最终结果如下图
我尝试使用这些代码,但没有给出预期的结果。
df = pd.concat((df1, df2))
print(df.drop_duplicates('id'))
有人可以帮我解决这个问题吗?
最佳答案
尝试如下:
- 使用
df.isin
检查df['id']
中的每个值是否包含在df2['id']
中。 - 接下来,使用一元运算符
~
(波形符)反转生成的 bool 值pd.Series
,并从d1
中进行选择。 - 最后,重置索引。
一句话:
df3 = df1[~df1['id'].isin(df2['id'])].reset_index(drop=True)
print(df3)
type_sale id
0 group_4 80
1 group_7 60
关于python - Pandas 中的反向选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73608462/