![](/img/trans.png)
[英]Python - Apply rsplit in DataFrame column using lambda
[英]Getting substring from column in python using apply lambda and str
我有一個帶有Fib列的數據幀,我試圖從中獲取一個子串:
誰能告訴我為什么這段代碼不起作用:
df['new'] = df['Fib'].apply(lambda x:x.str[2:10])
AttributeError:'str'對象沒有屬性'str'
但如果我這樣做,它會起作用:
df['new_col'] = df['Fib'].astype(str).str[2:10]
我試圖用apply + lambda來解決上面的問題,只是為了獲得一些經驗。 謝謝
代碼中的問題是,沿着系列行apply
的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
,如文檔中明確指出:
系列和索引的矢量化字符串函數
因此,對於您的示例,您應該避免使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.