选项 1
您可以使用 str.contains/eq 执行“包含”检查,并使用 np.where 有条件地构建您的结果 -
df.EVENT = np.where(df.NAME.str.contains('DEN'), df.EVENT + '_' + df.NAME, df.EVENT)
或者,
df.EVENT = np.where(df.NAME.eq('DEN'), df.EVENT + '_' + df.NAME, df.EVENT)
df
EVENT NAME
0 A_DEN DEN
1 B HAU
2 C TOT
3 D ABC
4 E_DEN DEN
别忘了import numpy as np。
选项 2
另一种方法是使用pd.Series.mask/pd.Series.where -
df.EVENT = df.EVENT.mask(df.NAME.str.contains('DEN'), df.EVENT + '_' + df.NAME)
或者,
df.EVENT = df.EVENT.where(~df.NAME.str.contains('DEN'), df.EVENT + '_' + df.NAME)
df
EVENT NAME
0 A_DEN DEN
1 B HAU
2 C TOT
3 D ABC
4 E_DEN DEN
选项 3
另一种选择是使用基于 loc 的带有掩码的索引 -
m = df.NAME.str.contains('DEN')
df.loc[m, 'EVENT'] += ('_' + df.loc[m, 'NAME'])
df
EVENT NAME
0 A_DEN DEN
1 B HAU
2 C TOT
3 D ABC
4 E_DEN DEN