【问题标题】:Matching randomly ordered values in one column to another in Pandas [duplicate]在 Pandas 中将一列中的随机排序值与另一列匹配 [重复]
【发布时间】:2021-05-10 05:53:08
【问题描述】:

大家好,

我正在使用电子邮件验证软件来检查我的数据集中的电子邮件是否有效。如何使用 pandas 将名为“Valid Email”的列中的电子邮件与“Email”列匹配并返回“Good_Email”中的值?为了清楚起见,结果可能看起来像

              Good_Email

              bob_45@gmail.com
              nan
              tom34@gmail.com
              nan

还假设与“电子邮件”列相比,名为“有效电子邮件”的列将随机排序,并且长度可以更短。 (即完全如示例中所示)。

提前致谢!

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

.where()可以和.isin()一起使用,如下:

df['Good_Email'] = df['Email'].where(df['Email'].isin(df['Valid Email']))

演示

data = {'Name': ['Bob', 'Jack', 'Tom', 'Mike'],
 'Email': ['bob_45@gmail.com', np.nan, 'tom34@gmail.com', 'mike@gmail.com'],
 'Valid Email': ['tom34@gmail.com', 'bob_45@gmail.com', np.nan, np.nan]}

df = pd.DataFrame(data)

df['Good_Email'] = df['Email'].where(df['Email'].isin(df['Valid Email']))

输出:

print(df)

   Name             Email       Valid Email        Good_Email
0   Bob  bob_45@gmail.com   tom34@gmail.com  bob_45@gmail.com
1  Jack               NaN  bob_45@gmail.com               NaN
2   Tom   tom34@gmail.com               NaN   tom34@gmail.com
3  Mike    mike@gmail.com               NaN               NaN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2019-01-22
    相关资源
    最近更新 更多