【问题标题】:How to remove all values in a dataframe based on the values in another dataframe?如何根据另一个数据框中的值删除数据框中的所有值?
【发布时间】:2021-10-09 13:02:57
【问题描述】:

我有两个数据框。

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           

【问题讨论】:

  • df = df.mask(df.isin(df2['Remove'].values), '')
  • @Ch3steR 你能把这个作为答案发布,以便我接受。
  • svp 发布了类似的答案,您可以接受。如果我现在发布一个重复的答案(两个相似的答案没有任何价值)。

标签: python pandas dataframe


【解决方案1】:

你可以使用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           

【讨论】:

    【解决方案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 
    

    【讨论】:

      猜你喜欢
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 2021-11-22
      相关资源
      最近更新 更多