0
Fruits
Home>Fruits>mango
Home>Fruits>apple

Expected output:

Fruits fruits split
Home>Fruits>mango [Home,Fruits, Mango]
Home>Fruits>apple [Home,Fruits, Apple]

def spilt(a): return re.split(pattern = r"[>]", string = a)

I'm trying this but it is giving TypeError Expected string or buffer error

pheonix
  • 31
  • 3

1 Answers1

0

Use Series.str.split if dont need capitalize strings:

df['fruits split'] = df['Fruits'].str.split('>')
print (df)
              Fruits           fruits split
0  Home>Fruits>mango  [Home, Fruits, mango]
1                NaN                    NaN
2  Home>Fruits>apple  [Home, Fruits, apple]

Solutions with title/capitalize each value of lists:

df['fruits split'] = df['Fruits'].str.split('>')
                                 .apply(lambda x: np.nan if isinstance(x, float) 
                                                    else [y.title() for y in x])

df['fruits split'] = [np.nan if isinstance(x, float) 
                      else [y.title() for y in x.split('>')]
                      for x in df['Fruits']]

df['fruits split'] = [np.nan if isinstance(x, float) else [y.title() for y in x] 
                      for x in df['Fruits'].str.split('>')]
print (df)
              Fruits           fruits split
0  Home>Fruits>mango  [Home, Fruits, Mango]
1                NaN                    NaN
2  Home>Fruits>apple  [Home, Fruits, Apple]
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252