Python 2.7 使用Python从电子邮件中提取用户名

Python 2.7 使用Python从电子邮件中提取用户名,python-2.7,pandas,Python 2.7,Pandas,我试图从CSV文件中读取大量电子邮件地址,并使用Pandas从这些电子邮件地址中提取用户名,但得到以下错误消息 ValueError:值的长度与索引的长度不匹配 这是我的代码,并不复杂 import pandas as pd import sys input_file = sys.argv[1] data_frame = pd.read_csv(input_file) data_frame['Username'] = data_frame['Email Domain'].str.split

我试图从CSV文件中读取大量电子邮件地址,并使用Pandas从这些电子邮件地址中提取用户名,但得到以下错误消息

ValueError:值的长度与索引的长度不匹配

这是我的代码,并不复杂

import pandas as pd
import sys

input_file = sys.argv[1]

data_frame = pd.read_csv(input_file)

data_frame['Username'] = data_frame['Email Domain'].str.split("@")[0]

print(data_frame)
我做错了什么? 谢谢,

考虑一下这个df

df = pd.DataFrame({'username': ['abc@gmail.com', 'xyz@yahoo.com', 'blah24@gmail.com']})
您可以使用str.extract获得如下用户名

df.username.str.extract("(.*)@")
你得到

0       abc
1       xyz
2    blah24
将此与

df.username.str.split("@")[0]
你坐第一排

['abc', 'gmail.com']

严格解释你做错了什么

data_frame['Email Domain'].str.split("@")[0]
#           splits the strings /           \ points to the first row of result
解决方案

data_frame['Email Domain'].str.split("@").str[0]

0       abc
1       xyz
2    blah24
Name: Email Domain, dtype: object
设置
谢谢

df = pd.DataFrame(
    {'username': ['abc@gmail.com', 'xyz@yahoo.com', 'blah24@gmail.com']})

什么是完整堆栈跟踪?您能提供CSV文件的示例吗?谢谢您的解释。您和piRSquared的答案都有效。@piRSquared,谢谢您的回复。成功了@好奇的人可以随意选择有用的答案。即使你不接受一个答案,当你投票表明这个答案仍然有用时,你也会很感激。