【发布时间】:2018-08-13 17:28:39
【问题描述】:
我在使用 Pandas .isin() 方法时遇到了一个奇怪的问题。我正在做一个项目,我需要按长度、常用单词/密码列表等来识别错误密码(别担心,这是来自公共来源)。其中一种方法是查看是否有人使用他们姓名的一部分作为密码。我正在使用 .isin() 来确定是否是这种情况,但这给了我奇怪的结果。显示:
# Extracting first and last names into their own columns
users['first_name'] = users.user_name.str.extract('(^.+)(\.)', expand = False)[0]
users['last_name'] = users.user_name.str.extract('\.(.+)', expand = False)
# Flagging the users with passwords that matches their names
users['uses_name'] = (users['password'].isin(users.first_name)) | (users['password'].isin(users.last_name))
# Looking at the new data
print(users[users['uses_name']][['password','user_name','first_name','last_name','uses_name']].head())
这个输出是:
password user_name first_name last_name uses_name
7 murphy noreen.hale noreen hale True
11 hubbard milford.hubbard milford hubbard True
22 woodard jenny.woodard jenny woodard True
30 reid rosanna.reid rosanna reid True
58 golden rosalinda.rodriquez rosalinda rodriquez True
大部分都很好; milford.hubbard 使用“hubbard”作为密码等。但是我们有几个像第一个这样的例子。 Noreen Hale 被标记,尽管她的密码是“murphy”,与她的名字只有一个字母。
我这辈子都想不通是什么原因造成的。有谁知道为什么会发生这种情况,以及如何解决它?
【问题讨论】: