如何通过在 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])
我有需要用 (_) 分隔符分隔的列。
这是一个示例文本“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])