[英]False negatives when removing rows from dataframe
我有几个这样的名单:
时间戳名称代码 Email
我想对这些列表进行排序,以便仅保留正确输入代码的列表。 这里给出了一个示例列表
timestamp name password email
2021-03-05 14:35:30.966000 **** ZX211 ***
1 2021-03-05 15:08:36.417000 **** ZX211 ***
出于隐私原因,我将姓名和电子邮件涂黑了,但你明白了。 有些人写错了代码(ZX211),需要淘汰。 我写了这样的东西。 这应该将不正确的数据扔到另一个数据集。
ana1 = pd.read_excel(oturum, 'ana_1')
ana1_new = pd.DataFrame().reindex_like(ana1)
boyut1=len(ana1.index)
for i in range(0,boyut1):
sifreler=["ZX211","UT938","ZIW92","QVL34","PTCO2","MQL13"]
if ana1.iloc[i,2]!= sifreler[0]:
ana1.loc[ana1_new.index[i]] = ana1_new.iloc[i]
这成功地删除了代码不正确的行,在本例中为“ZX211”。 但是,它会给出假阴性。 例如,它还删除了一些正确编写的代码和前面有空格的代码(ZX211)与(ZX211)。 我不明白它有什么问题,任何帮助将不胜感激。
没有原始数据很难说,但是您可以使用 boolean 索引来简化代码,例如:
ana1[ana1.password != sifreler[0]]
这是一个玩具示例:
import pandas as pd
passwords = [
'ZX211',
'ZX211',
' ZX211', # wrong
'ZX211',
' ZX211 ', # wrong
'UT938', # wrong
]
df = pd.DataFrame({
'name': ['***'] * len(passwords),
'password': passwords,
})
姓名 | 密码 | |
---|---|---|
0 | *** | ZX211 |
1 | *** | ZX211 |
2 | *** | ZX211 |
3 | *** | ZX211 |
4 | *** | ZX211 |
5 | *** | UT938 |
df[df.password != 'ZX211']
姓名 | 密码 | |
---|---|---|
2 | *** | ZX211 |
4 | *** | ZX211 |
5 | *** | UT938 |
df[df.password == 'ZX211']
姓名 | 密码 | |
---|---|---|
0 | *** | ZX211 |
1 | *** | ZX211 |
3 | *** | ZX211 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.