是否有任何功能相当于df.isin()
和df[col].str.contains()
?的组合?
例如,假设我有这个系列
s = pd.Series(['cat','hat','dog','fog','pet'])
,并且我想找到s
包含任何内容的所有地方['og', 'at']
,我想要获得除了宠物之外的一切.
我有一个解决方案,但它相当不优雅:
searchfor = ['og', 'at']
found = [s.str.contains(x) for x in searchfor]
result = pd.DataFrame[found]
result.any()
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我的代码中有类似的东西:
df2 = df[df['A'].str.contains("Hello|World")]
但是,我想要所有不包含Hello或World的行.我如何最有效地扭转这一局面?
我正在尝试df['column_name'].str.count("+")
在 python 熊猫中使用,但我收到
“错误:没有什么可重复的”
. 使用常规字符,该方法有效,例如df['column_name'].str.count("a")
工作正常。
另外,“^”符号也有问题。如果我使用df['column_name'].str.contains("^")
结果不正确 - 看起来“^”被解释为“”(空白)。
令人惊讶的是,如果我在常规的非熊猫字符串上使用.count("+")
和.contains("^")
,它们工作得非常好。
简单的工作示例:
df = pd.DataFrame({'column1': ['Nighthawks+', 'Dragoons'], 'column2': ['1st', '2nd']}, columns = ['column1', 'column2'])
Run Code Online (Sandbox Code Playgroud)
当应用df["column1"].str.contains("^")
一个得到“真,真”但应该是“假,假”。
当应用df["column1"].str.count("+")
一个得到
“错误:没有什么可重复的”
但是,在熊猫之外,"bla++".count("+")
正确地给出结果“2”。
任何解决方案?谢谢