Python 2.7 使用Python从电子邮件中提取用户名
我试图从CSV文件中读取大量电子邮件地址,并使用Pandas从这些电子邮件地址中提取用户名,但得到以下错误消息 ValueError:值的长度与索引的长度不匹配 这是我的代码,并不复杂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
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,谢谢您的回复。成功了@好奇的人可以随意选择有用的答案。即使你不接受一个答案,当你投票表明这个答案仍然有用时,你也会很感激。