I have a dataframe like as shown below
df = pd.DataFrame({'val': ['>1234','<>','<1000','<test','31sadj',123,43.21]})
I would like to create 3 new columns
val_num - will store ONLY NUMBER values that comes along with symbols ex: 1234 (from >1234) and 1000 (from <1000) but WILL NOT STORE 31 (from 31sadj) because it doesn't have any symbol
val_str - will store only values a mix of NUMBER,symbols,ALPHABETS or just plain alphabets ex: 31sadj. It can have any symbols except >,<,=
val_symbol - will store ONLY 3 symbols like >, <, =
I tried the below but it isn't accurate
df['val_SYMBOL'] = df['val'].str.extract(r'([<>=]+)').fillna('=')
df['val_num'] = df['val'].str.extract(r'([0-9]+)')
df['val_str'] = df['val'].str.extract(r'([a-zA-Z0-9\s-]+)')
I expect my output to be like as shown below
