向列添加字符串前缀

时间:2021-05-28 04:20:40

标签: python regex pandas

我正在尝试为 df 中的某些行(满足条件的行)添加前缀。 试过这个:

work_df['col1'] = 'bla'+work_df['col1'].astype(str) if work_df.col1.str.contains(my_list, regex=True, na=False) else work_df['col1'].astype(str)

然后得到 TypeError: unhashable type: 'dict'

我也试过:

work_df[work_df.col1.str.contains(ny_list, regex=True, na=False)] = 'bla'+work_df['col1'].astype(str)

但也没有用。我在那里错过了什么?

1 个答案:

答案 0 :(得分:0)

如果需要测试列表是必要的,则通过 | 为正则表达式 or 加入值,然后传递给 numpy.where

 mask = work_df.col1.str.contains('|'.join(my_list), regex=True, na=False)
 s = work_df['col1'].astype(str)
 work_df['col1'] = np.where(mask, 'bla'+ s, s)

或者:

 work_df['col1'] = s.mask(mask, 'bla'+ s)