假设我有以下简单数据框:
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
我认为您可以尝试:
df_data['name'].str.extract('\s(\S+)$')
输出:
0
0 NaN
1 XYZ
如果您希望进行多次分割,则只需要最后一次分割就可以更快地达到rpartition
。然后屏蔽任何单个单词字符串。
u = df_data.name.str.rpartition()
u[2].where(u[0].ne(''))
#0 NaN
#1 XYZ
#Name: 2, dtype: object