Разделение значений по символам 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)})