按列值分隔后保存分段的csv文件



我正在尝试分割名称和电子邮件的csv文件。该文件具有first_name、last_name、email和email域。我需要把它们按"商务"或"个人"邮件分类。

的数据看起来像这样:CSV文件

import pandas as pd
data = pd.read_csv("C:\Users\Path\to\file\5.csv")  
domains =['gmail.com',
'att.com',
'netzero.net',
'msn.com',
'yahoo.com',
'aol.com',
'bellsouth.net',
'hotmail.com',
'comcast.net',
'mail.com',
'verizon.net',
'ymail.com',
'live.com',
'netscape.net',
'icloud.com',
'cableone.net',
'alltel.net',
'worldnet.att.com',
'centurytel.net',
'earthlink.net',
'adelphia.com',
'alltell.net',]
individual = data.loc[data['Email-Domain'] == str(domains)]
business = data.loc[data['Email-Domain'] !== str(domains)]
print(individual[['First_Name_01','Last_Name_01','Email']])
print(business[['First_Name_01','Last_Name_01','Email']])

然而,当我运行这个脚本时,它只是为第一个输出打印一个空列表,然后在下一个输出中打印csv文件中的所有内容。

看起来您正在比较列表终止将电子邮件(@之后的所有内容)与每个完整的电子邮件. 您应该查看csv的电子邮件是否在指定的域内终止。有两件事需要纠正:从csv中只使用电子邮件终止,不检查字符串与列表的相等性(==)。相反,检查每个邮件终止是否在域列表中。

你可以这样做:

individual = data[data['Email-Domain'].str.split(“@”)[-1].isin(domains)]
business = data[~data['Email-Domain'].str.split(“@”)[-1].isin(domains)]