如何基于另一个数据帧中的值删除数据帧中的所有值?

2024-05-19 10:29:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧

data = {
    'Title': ['Ak1', 'Ak2', 'Ak3', 'Ak4', 'Ak5', 'Ak6', 'Ak7', 'Ak8'],
    'Items': ['A', 'B', 'J', 'A', 'A', 'K', 'L', 'M'],
    'Item2': ['K', 'B', 'O', 'A', 'A', 'K', 'J', 'F'],
    'Item3': ['A', 'K', 'D', 'A', 'A', 'K', 'L', 'M'],
}
df = pd.DataFrame(data)

df

    Title   Items   Item2   Item3
0   Ak1     A       K       A
1   Ak2     B       B       K
2   Ak3     J       O       D
3   Ak4     A       A       A
4   Ak5     A       A       A
5   Ak6     K       K       K
6   Ak7     L       J       L
7   Ak8     M       F       M

第二数据帧df2

data = {
    'Remove': ['A', 'J', 'M']
}
df2 = pd.DataFrame(data)

df2

    Remove
0   A
1   J
2   M

我想删除df1中的所有值,这些值是df2中的值。预期产出如下

    Title   Items   Item2   Item3
0   Ak1             K   
1   Ak2     B       B       K
2   Ak3             O       D
3   Ak4         
4   Ak5         
5   Ak6     K       K       K
6   Ak7     L               L
7   Ak8             F           

Tags: 数据datatitleitemsdf2item2item3ak5
2条回答

使用pandas.replace怎么样?如果我尝试在您的示例数据上实现,结果如下:

df.replace(df2.Remove.unique(),'')

    Title   Items   Item2   Item3
0   Ak1               K 
1   Ak2       B       B       K
2   Ak3               O       D
3   Ak4         
4   Ak5         
5   Ak6       K       K       K
6   Ak7       L               L
7   Ak8               F 

您可以使用isin函数:

df3 = df.mask(df.isin(df2['Remove'].values), '')
df3

    Title   Items   Item2   Item3
0   Ak1             K   
1   Ak2     B       B       K
2   Ak3             O       D
3   Ak4         
4   Ak5         
5   Ak6     K       K       K
6   Ak7     L               L
7   Ak8             F           

相关问题 更多 >

    热门问题