Python Pandas re.compile函数–;索引器错误:字符串索引超出范围

Python Pandas re.compile函数–;索引器错误:字符串索引超出范围,python,pandas,Python,Pandas,此代码用于为数据帧列中的每个单元格搜索r“\d+X | X\d+”。 如果找到“X”,它会将其更改为“X” 问题:如果在列“名称”中的单元格中未找到“x”或“x”,则会显示错误: if leverage[0].replace("X","x") == "x": IndexError: string index out of range 对于不包含这些字符的字符串,如何避免此问题 数据帧示例: import pandas as pd import re df = pd.DataFrame([

此代码用于为数据帧列中的每个单元格搜索
r“\d+X | X\d+”
。 如果找到
“X”
,它会将其更改为
“X”


问题:如果在列
“名称”
中的单元格中未找到
“x”
“x”
,则会显示错误:

if leverage[0].replace("X","x") == "x":
IndexError: string index out of range
对于不包含这些字符的字符串,如何避免此问题


数据帧示例:

import pandas as pd
import re

df = pd.DataFrame(["LONG APPLE X5 C", "SHORT APPLE C"], columns=["name"])

在调用func之前,只需先使用筛选df:

df["description"] = df.loc[df['name'].str.contains('x', case=False), 'name'].map(lambda x:f(x))
因此,掩码返回以下内容:

In [17]:
df.loc[df['name'].str.contains('x', case=False), 'name']

Out[17]:
0    LONG APPLE X5 C
Name: name, dtype: object
如果不想屏蔽df,只需在func中添加一个检查:

def f(value):
    if 'x' not in value.lower():
        print('not in')
        # do whatever you want here

如果可能的话,我希望直接在函数中找到一个解决方案。我已经更新了答案,但取决于duff值的数量,掩蔽优先可能更有效
def f(value):
    if 'x' not in value.lower():
        print('not in')
        # do whatever you want here