当前位置: 首页 > 面试题库 >

在pandas中,如何从基于另一个数据框的数据框中删除行?

柯学
2023-03-14
问题内容

我有2个数据框,一个命名为USERS,另一个命名为EXCLUDE。他们两个都有一个名为“电子邮件”的字段。

基本上,我要删除EXERSUDE中包含电子邮件的USERS中的每一行。

我该怎么做?


问题答案:

您可以将boolean indexing和条件一起使用isinSeries通过~以下方式反转布尔值:

import pandas as pd

USERS = pd.DataFrame({'email':['a@g.com','b@g.com','b@g.com','c@g.com','d@g.com']})
print (USERS)
     email
0  a@g.com
1  b@g.com
2  b@g.com
3  c@g.com
4  d@g.com

EXCLUDE = pd.DataFrame({'email':['a@g.com','d@g.com']})
print (EXCLUDE)
     email
0  a@g.com
1  d@g.com



print (USERS.email.isin(EXCLUDE.email))
0     True
1    False
2    False
3    False
4     True
Name: email, dtype: bool

print (~USERS.email.isin(EXCLUDE.email))
0    False
1     True
2     True
3     True
4    False
Name: email, dtype: bool

print (USERS[~USERS.email.isin(EXCLUDE.email)])
     email
1  b@g.com
2  b@g.com
3  c@g.com

另一个解决方案merge

df = pd.merge(USERS, EXCLUDE, how='outer', indicator=True)
print (df)
     email     _merge
0  a@g.com       both
1  b@g.com  left_only
2  b@g.com  left_only
3  c@g.com  left_only
4  d@g.com       both

print (df.loc[df._merge == 'left_only', ['email']])
     email
1  b@g.com
2  b@g.com
3  c@g.com


 类似资料:
  • 问题内容: 我要执行的操作类似于合并。例如,通过合并,我们得到一个数据帧,其中包含第一个AND第二个数据帧中存在的行。通过合并,我们得到一个数据帧,该数据帧在第一个或第二个数据帧中都存在。 我需要的是一个数据帧,其中包含第一个数据帧中存在的行而第二个数据帧中不存在的行?有快速而优雅的方法吗? 问题答案: 如下所示呢? 只要有一个非关键的通用命名列,就可以让在sufffexes上执行的工作(如果没有

  • 我有一个数据帧(df1),其中包含200多列数据(每列数千行)。列名是字母数字的,并且彼此不同。 我有第二个数据集(df2),其中包含几列,其中第一列(名为“col1”)包含带有“值”的行,这些行带有df1的列名。 但不是对于df2中的每一行,我在df1中具有对应的列。 现在,我想删除(删除)df2中没有“对应”列的所有行。 我用“子集data.frame另一个data.frame的值”这样的关键

  • 我有两个pyspark数据帧 DF1 : df2: 我想向df1添加一个列Location_Id,从df2获取匹配的Id,如下所示: 我如何才能做到这一点?

  • 问题内容: 我有数据框: df 如何删除列名,并从该数据帧?一种方法是将其写入csv文件,然后在指定header = None的情况下读取它。有没有一种方法,而无需写到csv并重新读取? 问题答案: 我认为你不能删除列名,只能通过重新设置有: 这与使用和相同: 下一个解决方案:

  • 问题内容: 我需要删除pandas中数据框的前三行。 我知道会删除最后一行,但我不知道如何删除前n行。 问题答案: 用途: 将为您提供一个没有前三行的新df。

  • 我有一个名为“mydata”的数据框,看起来像这样: 我想删除第2、4、6行。例如,像这样: