提问人:user614963 提问时间:11/13/2023 更新时间:11/13/2023 访问量:34
Python 中的 filtered_df 和 str [重复]
filtered_df and str in Python [duplicate]
问:
我是 Python 的新手。我正在尝试过滤数据集。过滤器似乎工作得很好,或者我认为它确实有效:)
valid_Cas = ["yut", "thj", "bnm","vfd"]
filtered_df = df[df['Cas ID'].str[-3:].isin(valid_Cas)]
但是当一个过滤器超过三个字母时,它就不起作用了,比如:
valid_Cas = ["yut", "thj", "bnm","vfd","cdret"]
filtered_df = df[df['Cas ID'].str[-3:].isin(valid_Cas)]
这是什么意思: str[-3:] ?
如何过滤超过 3 个字母?
代码是过滤“BNM5623”和“5623BNM”还是离开它?
谢谢
答:
2赞
noah1400
11/13/2023
#1
这是什么意思: str[-3:] ?
str[-3:0]
是一种切片操作,意思是“取字符串的最后 3 个字符”。例如,对于像“abcde”这样的给定字符串,将导致 . 对 DataFrame 中列的每个元素执行此切片操作。"abcde"[-3:]
"cde"
df['Cas ID'].str[-3:]
如何过滤超过 3 个字母?
要过滤超过 3 个字符,只需将切片操作调整为您正在寻找的所需字符串长度即可。例如,如果要按以 you 结尾的字符串进行过滤,则会使用 because 的长度为 5。'cdret'
str[-5:]
'cdret'
代码过滤“BNM5623”和“5623BNM”还是离开它?代码过滤“BNM5623”和“5623BNM”还是离开它?
该代码仅根据列表检查“Cas ID”列中每个条目的最后三个字符。因此,如果在您的列表中,它会识别为有效,但它不会识别为有效,因为它正在查看最后三个字符,即 .df['Cas ID'].str[-3:].isin(valid_Cas)
valid_Cas
'bnm5623'
'562'
'5623bnm'
'bnm'
若要筛选 3 个以上的字母,请将切片运算符调整为列表中最长的字符串。以下是实现此目的的方法:
valid_Cas = ["yut", "thj", "bnm", "vfd", "cdret"]
max_length = max(len(s) for s in valid_Cas) # Find the length of the longest string in valid_Cas
# Filter based on the last characters of each string in 'Cas ID', using `max_length`
filtered_df = df[df['Cas ID'].str[-max_length:].isin(valid_Cas)]
评论
str[-3:]
表示“列表中的最后三项”。[-3:]