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