Разделение значений по символам python

У меня есть данные в датасете, где встречается Au-Fe3O4 Cu@CuFe2O3 и так далее. Сложные формулы имеют разделители: -, / и @. Мне нужно разбить эти значения строго по этим разделителям, как это возможно сделать? Чтобы получились: [Au, Fe3O4] и так далее

Нужно использовать функцию разбиения и классы?

Пример того, как я пыталась разделить:

  for formula in df['Core composition (formula)']:
      if formula.isalnum( ) == True:
        comp = Composition(formula)
        df['Electronegativity core'] = comp.average_electroneg
      else:
        line = re.split("-|@|/", formula)
        compSum = 0
        while i in line:
          comp1 = Composition(i)
          compSum += comp1
        df['Electronegativity core'] = compSum.average_electroneg
      print(comp.average_electroneg) 

Ответы (1 шт):

Автор решения: Алексей Р

Как резать строки regex'ом у вас уже есть в коде. Видимо, вопрос в том, как сделать это в Pandas?

import pandas as pd

df = pd.DataFrame({'Core composition (formula)': ['Au-Fe3O4', 'Cu@CuFe2O3', 'так далее']})
df['Splitted formula'] = df['Core composition (formula)'].str.split('-|@|/')
df['Amount of elements'] = df['Splitted formula'].transform(len)
print(df)
  Core composition (formula) Splitted formula  Amount of elements
0                   Au-Fe3O4      [Au, Fe3O4]                   2
1                 Cu@CuFe2O3    [Cu, CuFe2O3]                   2
2                  так далее      [так далее]                   1

Однострочник:

df = df.assign(**{'Splitted formula': lambda x: x['Core composition (formula)'].str.split('-|@|/'), 'Amount of elements': lambda x: x['Splitted formula'].transform(len)})
→ Ссылка