我的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
答案 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