我正在尝试在 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.
如何在创建附加列时将字符串添加到字符串?
首先,从
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