pandas 正则匹配多个词语
时间: 2024-12-15 17:28:52 浏览: 10
在Pandas中,可以使用`str.contains()`函数结合正则表达式(regex)来进行多个词语的匹配。这个函数允许你在DataFrame的列中查找包含特定模式的字符串。例如,如果你想找出所有含有"apple"或"banana"的行,你可以这样做:
```python
import pandas as pd
df = pd.DataFrame({'Fruit': ['apple pie', 'banana split', 'orange juice']})
# 定义要匹配的多个词
words_to_match = ['apple', 'banana']
# 使用正则表达式匹配,| 表示或操作
matched_rows = df[df['Fruit'].str.contains('|'.join(words_to_match))]
print(matched_rows)
```
在这个例子中,`'|'.join(words_to_match)`将两个单词连接起来形成一个正则表达式模式`'(apple|banana)'`,然后`str.contains()`会检查每个元素是否包含这个模式。
相关问题
请用Python编写一段代码,要求能完成以下操作: 1、(从第一行开始,直到最后一行)对df['分词']列中每一行“香调”一词分别进行计数; 2、若计数大于2,则向新增的“香调”列对应行记录“混合香调”; 3、若计数等于2,则将第2个“香调”前面的第一个汉字词语记录至新增的“香调”列对应行; 4、若计数等于1,则将”香调:“后面的第一个中文词语记录至新增的“香调”列对应行;; 5、若计数等于0,则向新增的“香调”列记录“未标明”; 6、打印操作完成后的“香调”列。
以下是一份可能的代码实现,需要使用pandas库:
```python
import pandas as pd
import re
# 读取原始表格
df = pd.read_excel('input.xlsx')
# 定义分析每一行“香调”的函数
def analyze_xiangdiao(xiangdiao_str):
if pd.isna(xiangdiao_str): # 若为空值,则返回“未标明”
return '未标明'
else:
# 利用正则表达式匹配中文词语
words = re.findall(r'[\u4e00-\u9fa5]+', xiangdiao_str)
if len(words) == 0: # 若未匹配到,则返回“未标明”
return '未标明'
elif len(words) == 1: # 若匹配到一个,则返回该词语
return words[0]
elif len(words) == 2: # 若匹配到两个,则返回第一个词语的前一个词语
word_list = xiangdiao_str.split(words[1])
return word_list[0][-1] + word_list[1]
else: # 若匹配到多个,则返回“混合香调”
return '混合香调'
# 对df['分词']列中每一行“香调”一词分别进行计数,并记录到新列
df['香调'] = df['分词'].apply(lambda x: x.count('香调'))
# 根据计数结果,分别处理每一行“香调”
df['香调'] = df['香调'].apply(lambda x: analyze_xiangdiao(df.iloc[x.name]['分词']) if x > 0 else '未标明')
# 打印结果
print(df['香调'])
```
其中,`input.xlsx`为原始数据表格,需要根据实际情况进行修改。
阅读全文