Python Forum

Full Version: Substring and If then Condition to create column
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi There,

I have a requirement to create a new column by classifying the roads as Main roads and local roads.
If Road_No starting with H or M I want to classify it as Main roads, if not then local roads.

Below is the column name and the road numbers:
Road_No

H001
H0002
M002
M03050
A001
B002
C002
F002
5001
8002

Appreciate if you can assist me with this.
Kind regards,
CK
Try this to see if that helps,

import pandas as pd

df=pd.read_csv("ab.csv",header=0, names=['roadno'])
print(df)
data=[] 
for i in df['roadno']:
	if i[:1].lower()=="h" or i[:1].lower()=="m":   #if i[:1].lower() in ('h','m'):
		data.append("MAIN road")
	else:
		data.append("other road")
print(data)
df["new column"]=data
print(df)
Output:
python test2.py roadno 0 H001 1 H0002 2 M002 3 M03050 4 A001 5 B002 6 C002 7 F002 8 5001 9 8002 ['MAIN road', 'MAIN road', 'MAIN road', 'MAIN road', 'other road', 'other road', 'other road', 'other road', 'other road', 'other road'] roadno new column 0 H001 MAIN road 1 H0002 MAIN road 2 M002 MAIN road 3 M03050 MAIN road 4 A001 other road 5 B002 other road 6 C002 other road 7 F002 other road 8 5001 other road 9 8002 other road
Best Regards,
Sandeep

GANGA SANDEEP KUMAR
just to add that you can also use
 if i.lower().startswith(("h", "m")):
PEP8 recommends using str.startswith() and str.endswith() methods instead of slicing