在 pandas eval 中使用用户定义的函数

问题描述 投票:0回答:1

我正在尝试在 pandas eval 中使用我的自定义函数。它在有限的使用中可以正常工作:

basic_df = DataFrame({"A":[1,2,3,4,5],"B":[20,40,60,100,90],
                               "C":["C1","C2","C3","C4","C5"],
                               })
def str_parse(element) -> str:
    return str(element)

print(basic_df.eval("@str_parse(A+B+100)"))

但是每当我想添加一些静态字符串(将字符串添加到字符串)时,它都会返回以下结果:

basic_df.eval("@str_parse(A+B+100) + \"additional string\"",)

0    121
1    142
2    163
3    204
4    195
dtype: int64additional string.

如何在创建附加列时将字符串添加到字符串?

python pandas parsing eval
1个回答
0
投票

首先,从

str_parse()
返回一个字符串类型的新系列(不仅仅是 Series 的字符串表示形式)。然后你可以使用
.__add__()
添加额外的字符串(由于某种原因,简单的
+
不起作用):

basic_df = pd.DataFrame(
    {
        "A": [1, 2, 3, 4, 5],
        "B": [20, 40, 60, 100, 90],
        "C": ["C1", "C2", "C3", "C4", "C5"],
    }
)


def str_parse(series):
    return series.astype(str)


print(basic_df.eval("new_col = @str_parse(A+B+100).__add__('additional string')"))

打印:

   A    B   C               new_col
0  1   20  C1  121additional string
1  2   40  C2  142additional string
2  3   60  C3  163additional string
3  4  100  C4  204additional string
4  5   90  C5  195additional string
© www.soinside.com 2019 - 2024. All rights reserved.