gpt4 book ai didi

python - 使用 apply lambda 和 str 从 python 中的列获取子字符串

转载 作者:行者123 更新时间:2023-11-30 22:01:40 25 4
gpt4 key购买 nike

我有一个带有 Fib 列的数据框,我试图从中获取一个子字符串:

谁能告诉我为什么这段代码不起作用:

df['new'] = df['Fib'].apply(lambda x:x.str[2:10])

AttributeError: 'str' object has no attribute 'str'

但是如果我这样做,它就会起作用:

df['new_col'] = df['Fib'].astype(str).str[2:10]

我正在尝试使用 apply+lambda 来解决上述问题,只是为了获得一些经验。谢谢

最佳答案

代码中的问题是,您沿系列行应用lambda函数将接收一个出现的字符串。下面是一个例子来说明这一点:

df = pd.DataFrame({'num':[1,4,2], 'alpha':['apple','orange','peach']})
df['alpha'].apply(lambda x:type(x))
<class 'str'>
<class 'str'>
<class 'str'>

请注意Series.str方法仅适用于 Series,如文档中明确说明的:

Vectorized string functions for Series and Index

因此,对于您的示例,您应该避免使用 apply。相反,请执行以下操作:

df['alpha'].str[2:10]

0 ple
1 ange
2 ach
Name: alpha, dtype: object

如果您想要的是使用 apply 而不是您提到的,您只需要 lambda x: x[2:10] 因为您直接切片字符串:

df['alpha'].apply(lambda x: x[2:10])
0 ple
1 ange
2 ach
Name: alpha, dtype: object

关于python - 使用 apply lambda 和 str 从 python 中的列获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53985690/

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