gpt4 book ai didi

python - Pandas re.compile 函数 – IndexError : string index out of range

转载 作者:太空宇宙 更新时间:2023-11-03 17:35:50 24 4
gpt4 key购买 nike

pandas 代码搜索 DataFrame 列中每个单元格的 r"\d+X|X\d+"。如果它找到“X”,则会将其更改为“x”

match = re.compile(r"\d+X|X\d+", flags=re.IGNORECASE)

def f(value):
f2 = lambda x: match.findall(x)[0] if len(match.findall(x)) > 0 else ""

leverage = f2(value)

if leverage[0].replace("X","x") == "x":
leverage = "".join(leverage[1:])+leverage[0].replace("X","x")

#Do other stuff here for var
return var

df["description"] = df["name"].map(lambda x:f(x))
<小时/>

问题:如果在“name”列的单元格中找不到“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"])

最佳答案

首先使用 contains 过滤 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

关于python - Pandas re.compile 函数 – IndexError : string index out of range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com