【发布时间】:2022-02-12 00:22:09
【问题描述】:
据我了解,如果没有电子邮件列,这应该只是通过 if 语句,但是当它到达 if 语句时它会抛出 KeyError: None。有人可以帮我理解这条规则吗?谢谢!
def not_isin(df1, df2, phone_col, df2phone_col,website_col, df2website_col,company_col, df2company_col, email_col, df2email_col):
print("entered not_isin")
df1 = df1[~df1[phone_col].isin(df2[df2phone_col])]
df1 = df1[~df1[website_col].isin(df2[df2website_col])]
df1 = df1[~df1[company_col].isin(df2[df2company_col])]
if df1[email_col] and df2[df2email_col]:
df1 = df1[~df1[email_col].isin(df2[df2email_col])]
return df1
return df1
【问题讨论】:
-
email_col和df2email_col的值是多少? -
一旦你解决了这个问题,我想你会遇到一个常见的错误“一个系列的真值是不明确的”。不要尝试将数据框用作布尔值。
-
@Barmar email col 是 'email' 而 df2email_col 在这种情况下是 'Email'。我收到这样的电子邮件是因为它们在每个新数据集上都有所不同。 def get_email(df): email = [col if col.lower().startswith('email') else None for col in df][0] return email 然后我将其分配为 email_col = get_email(df1)
-
我只是想查找列名是否存在于数据框标题中。
-
应该是
if email_col in df1 and df2email_col in df2:
标签: python if-statement