Pandas重新编译函数–索引器错误:字符串索引超出范围

2024-09-28 01:23:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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"或{},则会给出错误:

^{pr2}$

对于不包含这些字符的字符串,我如何规避这个问题?在


示例数据帧:

import pandas as pd
import re

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

Tags: lambdanameimportredataframepandasdfif
1条回答
网友
1楼 · 发布于 2024-09-28 01:23:55

在调用函数之前,只需先使用^{}过滤df:

df["description"] = df.loc[df['name'].str.contains('x', case=False), 'name'].map(lambda x:f(x))

所以掩码返回:

^{pr2}$

如果不想屏蔽df,只需在func中添加一个check:

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

相关问题 更多 >

    热门问题