簡體   English   中英

使用apply lambda和str從python中的列獲取子字符串

[英]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來解決上面的問題,只是為了獲得一些經驗。 謝謝

代碼中的問題是,沿着系列行applylambda函數將在顯示時接收字符串。 這是一個例子來說明這一點:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM