获取DataFrame列中的最后一个字符串元素作为条件

问题描述 投票:2回答:2

假设我有以下简单数据框:

df_data=pd.DataFrame({'name':['ABC','ABC XYZ']})

要获得我应用的最后一个元素:

df_end= pd.DataFrame(df_data.name.str.split().str.get(-1), columns=['name'])

结果为ABC。当name的长度小于2时,我想获得None。我尝试了以下操作,但我没有正确:

df_end['name'] = df_data.name.str.split().apply(lambda x: x[-1] if len(x)>1)

我不应该将ABC作为ABC的最后一个元素,但是我应该在XYZ中获取ABC XYZ

python pandas dataframe apply
2个回答
3
投票

我认为您可以尝试:

df_data['name'].str.extract('\s(\S+)$')

输出:

     0
0  NaN
1  XYZ

1
投票

如果您希望进行多次分割,则只需要最后一次分割就可以更快地达到rpartition。然后屏蔽任何单个单词字符串。

u = df_data.name.str.rpartition()
u[2].where(u[0].ne(''))

#0    NaN
#1    XYZ
#Name: 2, dtype: object
© www.soinside.com 2019 - 2024. All rights reserved.