Reputation: 3432
Hello everyone I would need help in order to add element to rows within a column that are in a list.
So here is an exemple
df
COL1 COL2
G1 Homo_sapiens_CR_bouvier
G1 Cattus_cattus
G1 Cattus_novegicus
G1 Rattus_norvegicus
G2 Rattus_suedicus3
G2 Homo_sapiens2_CR_bouvier
and I any value of this list :
liste=['Homo_sapiens','Rattus_suedicus'
]
is in the COL2
, I want to add a tag to it such as :
COL1 COL2
G1 Homo_sapiens_CR_bouvier_TAG
G1 Cattus_cattus
G1 Cattus_novegicus
G1 Rattus_norvegicus
G2 Rattus_suedicus3_TAG
G2 Homo_sapiens2_CR_bouvier_TAG
Does someone have an idea please ? (the real dataframe are sometime quite huge).
Upvotes: 0
Views: 21
Reputation: 862661
Use Series.str.contains
with add TAG
in DataFrame.loc
:
liste=['Homo_sapiens','Rattus_suedicus']
m = df['COL2'].str.contains('|'.join(liste))
df.loc[m, 'COL2'] += '_TAG'
#working like
#df.loc[m, 'COL2'] = df.loc[m, 'COL2'] + '_TAG'
print (df)
COL1 COL2
0 G1 Homo_sapiens_CR_bouvier_TAG
1 G1 Cattus_cattus
2 G1 Cattus_novegicus
3 G1 Rattus_norvegicus
4 G2 Rattus_suedicus3_TAG
5 G2 Homo_sapiens2_CR_bouvier_TAG
Some alternatives:
df['COL2'] = np.where(m, df['COL2'] + '_TAG', df['COL2'])
df['COL2'] = df['COL2'].mask(m, df['COL2'] + '_TAG')
Upvotes: 2