Lenua7 发表于 2019-8-17 22:21:12

Pandas中contains方法找不到带括号空格的字符串

在使用contains方法查找包含特定值的记录时,发现凡事特定值有括号空格的,都找不到,自己造了点数据发现还是这样,并且当括号不成对时还会报错,请问这个要怎么解决呢?

Seawolf 发表于 2019-8-17 23:28:46

你直接搜索对应的字母Key,把带括号的去掉试试

Lenua7 发表于 2019-8-18 09:06:25

Seawolf 发表于 2019-8-17 23:28
你直接搜索对应的字母Key,把带括号的去掉试试

这个只能治标不治本,做产品分析的话很多单品名里都有括号的,比如吉列锋隐剃须刀(3刀头)。如果我对单品名做一个groupby,不可能针对有括号的单品一个一个去搜的。

Seawolf 发表于 2019-8-18 09:14:56

Lenua7 发表于 2019-8-18 09:06
这个只能治标不治本,做产品分析的话很多单品名里都有括号的,比如吉列锋隐剃须刀(3刀头)。如果我对单 ...

具体问题具体分析嘛,再说现在这个key 本身就有问题,应该统一处理一下再做下一步分析才好

永恒的蓝色梦想 发表于 2019-8-18 21:25:35

没用过pandas,不懂

Mark_python 发表于 2021-9-11 16:16:00

我也遇到这样情况,用的是jupyter notebook,不知为啥啊

阿奇_o 发表于 2021-9-13 10:35:09

contains() 可以用正则表达式,你自己琢磨怎么写合适的正则,即可。

或根据情况,考虑用 str.extract()或str.extractall() , 具体用法查官网!

傻眼貓咪 发表于 2021-9-13 14:19:22

關於 Python Pandas Series.str.contains()

構造: Series.str.contains(pat, case=True, flags=0, na=nan, regex=True)參數:
pat: 字符序列或正則表達式。
case: 如果為True,則區分大小寫。
flags: 要傳遞給re模塊的標誌,例如重新 IGNORECASE。
na: 填寫缺失值的值。
regex: 如果為True,則假定 pat 是一個正則表達式。

正則表達式語法:
() 為特殊字符,描述:標記一個子表達式的開始和結束位置。子表達式可以獲取供以後使用。

範例:
import pandas as pd
import numpy as np

data = pd.Series(["banana", "apple", "orange", np.nan, "())"])

result = data.str.contains(pat = '(banana)')
print(result)UserWarning: This pattern has match groups. To actually get the groups, use str.extract.
result = data.str.contains(pat = '(banana)')
0   True
1    False
2    False
3      NaN
4    False
dtype: object這裡你會發現出現用戶警告:此模式具有匹配組。要實際獲取組,請使用 str.extract。
页: [1]
查看完整版本: Pandas中contains方法找不到带括号空格的字符串