如何通过在 pandas 中切片来拆分列字符串?

How to split the column string by slicing in pandas?

我有需要用 (_) 分隔符分隔的列。

这是一个示例文本“PPPP_OVS_ARG_MBC_MM-Models_RTNT_Always-On_IG VID - VW - #1 Engagement _ FY21 _ Febrero _ 202102 _ Falta OP"

我可以使用

拆分它
df['Name'].str.rsplit("_", expand=True)[0]
df['Name'].str.rsplit("_", expand=True)[1]
df['Name'].str.rsplit("_", expand=True)[2]
df['Name'].str.rsplit("_", expand=True)[3]

之后我不想拆分,我只需要得到整个字符串

"MM-Models_RTNT_Always-On_IG VID - VW - #1 Engagement _ FY21 _ Febrero _ 202102 _ Falta OP"

..有什么办法切吗?

使用 str.split(series,expand=True)join

print(df)


              Name
0       PPPP_OVS_ARG_MBC_MM-Models_RTNT_Always-On...
1       PPPP_OVS_ARG_MBC_MM-Models_RTNT_Always-On...

s = df['Name'].str.split('_',expand=True)


df1 = df.join(
    s.iloc[:,:3].join(
        s.iloc[:,3:].agg('_'.join,axis=1).to_frame('string')
            )
        )

print(df1)

编辑以获取最后一个值。

df['last_value'] = df['Name'].str.split('_',expand=True).iloc[:,3]

你可以试试这个。

df['Name'].str.split("_", 4)

这将 return 一个像这样的列表。

[PPPP, OVS, ARG, MBC, MM-Models_RTNT_Always-On_IG VID - VW - #1 Engagement _ FY21 _ Febrero _ 202102 _ Falta OP]

这应该有效。

df['New Column'] = df['Name'].apply(lambda x: x.split('_', 4)[-1])