Pandas:在最后一次出现时拆分字符串

Ala*_*lan 5 python pandas

我正在尝试根据分隔符在 Pandas 数据框中拆分一列,并获取最后一部分。

pandas 有 str.rsplit 和 str.rpartition 函数。

如果我尝试:

df_client["Subject"].str.rsplit("-", 1)
Run Code Online (Sandbox Code Playgroud)

我得到

0 [活动 - 位置,用户代码]
1 [活动 - 位置,用户代码]

如果我尝试

df_client["Subject"].str.rpartition("-")
Run Code Online (Sandbox Code Playgroud)

我得到

      0            1      2   
Run Code Online (Sandbox Code Playgroud)

0 活动 - 位置 - 用户代码
1 活动 - 位置 - 用户代码

如果我做

df_client["Subject"].str.rpartition("-")[2]
Run Code Online (Sandbox Code Playgroud)

我得到

0 用户代码

这就是我想要的。

对我来说, str.rsplit 似乎不直观。

获得拆分字符串的列表后,我将如何选择我需要的单个项目?

jez*_*ael 9

我认为需要通过 str与 iterables 一起工作来建立索引

#select last lists 
df_client["Subject"].str.rsplit("-", 1).str[-1]
#select second lists
df_client["Subject"].str.rsplit("-", 1).str[1]
Run Code Online (Sandbox Code Playgroud)

如果性能很重要,请使用list comprehension

df_client['last_col'] = [x.rsplit("-", 1)[-1] for x in df_client["Subject"]]
print (df_client)
                      Subject  last_col
0  Activity-Location-UserCode  UserCode
1  Activity-Location-UserCode  UserCode
Run Code Online (Sandbox Code Playgroud)