我正在尝试为 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)
但也没有用。我在那里错过了什么?
答案 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)