Попробуйте что-то вроде этого.
split_df = df['location_ms'].str.split(pat=";", expand=True)
Добавьте что-то вроде этого, если вы хотите объединить его обратно в исходный фрейм данных.
df = df.merge(split_df, left_index=True, right_index=True)
df = df.drop('location_ms')
Для вашей новой проблемы (разделение по;
и :
):
split_df = df['location_ms'].str.split(pat=";", expand=True)
subsplit_df = pd.DataFrame(index = split_df.index)
for i in range(split_df.shape[1]):
subsplit_df = subsplit_df.merge(split_df.iloc[:, i].str.split(pat=":", expand=True), left_index=True, right_index=True)
subsplit_df.columns = range(subsplit_df.shape[1])
Вы можете объединить его, как указано выше, если хотите.