如何根据前缀分割数据框值

时间:2020-08-16 06:38:44

标签: python-3.x pandas

我的dataframe列具有不同的值,我想分割前缀为172_的值并更新相同的dataframe。有人可以在这里帮我吗。

df_select['tradename_id']=['172_002000026440_AT','172_002000026440_CA','CA_CORPORATE1','CA_LYM_B']
df_select['tradename_id'].str.rsplit("_", n=1, expand=True)

Actual value :172_002000026440_AT
Expected value:172_002000026440

1 个答案:

答案 0 :(得分:3)

我认为您仅需要通过Series.str.startswith创建的掩码来设置新值,在split中删除expand=True并通过索引str[0]选择第一个列表:

df_select = pd.DataFrame({'tradename_id':['172_002000026440_AT','172_002000026440_CA',
                                          'CA_CORPORATE1','CA_LYM_B']})

m = df_select['tradename_id'].str.startswith('172_')
df_select.loc[m,'tradename_id'] = df_select.loc[m,'tradename_id'].str.rsplit("_", n=1).str[0]

print (df_select)
       tradename_id
0  172_002000026440
1  172_002000026440
2     CA_CORPORATE1
3          CA_LYM_B

或使用Series.update

m = df_select['tradename_id'].str.startswith('172_')
df_select['tradename_id'].update(df_select.loc[m,'tradename_id'].str.rsplit("_", n=1).str[0])

print (df_select)
       tradename_id
0  172_002000026440
1  172_002000026440
2     CA_CORPORATE1
3          CA_LYM_B