我正在尝试为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)
但它也不起作用。我在那里错过了什么?
如果需要测试列表,则通过正则表达式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)