I have a dataframe like below, and I need to create a new column Block
with either the value 1
or 2
in it based on a partial string match in the column Program Number
where it says _block_1 or _block_2. I've been trying if statements and .str.contains
but can't get it to work. How would you do this?
148 0209-3SP_block_1 ['g76p010060q00250r.0005' 'JEBD0507160 REV A' CHNCIII
149 0209-3SP_block_2 ['g76x.3761z-.500p03067q03067f.05' 'JEBD0507160 REV A' CHNC III
150 0209-5SP_block_1 ['g76p020060q00250r.0005' 'JEBD0507160 REV A' CHNC III
151 0209-5SP_block_2 ['g76x.3767z-.48p03067q03067f.05' 'JEBD0507160 REV A' CHNC III
152 0210-3SP_block_1 ['g76p010060q00250r.0005' 'JEBD0507160 REV A' CHNC III
You could use the method where
from numpy
:
import numpy as np
df['Block'] = np.where(
df['Machine'].str.contains('_block_1'),1,
np.where(df['Machine'].str.contains('_block_2'),2,0)
)
Otherwise, assuming all the strings have the same length:
df['Block'] = df['Machine'].str[15:].astype(int)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.