Вы можете использовать Series.str.strip
с Series.str.split
:
df['new'] = df[0].str.strip('[]').str.split()
print (df)
0 new
0 ["A" "B" "C" "D"] ["A", "B", "C", "D"]
1 [8 3 6 11] [8, 3, 6, 11]
2 [5 7 4 3] [5, 7, 4, 3]
3 14 [14]
Если необходимы смешанные данные - list
со скалярами добавить Series.mask
для применимого решения только для значений, начинающихся с [
, проверенных Series.str.startswith
:
df['new'] = df[0].mask(df[0].str.startswith('['), df[0].str.strip('[]').str.split())
print (df)
0 new
0 ["A" "B" "C" "D"] ["A", "B", "C", "D"]
1 [8 3 6 11] [8, 3, 6, 11]
2 [5 7 4 3] [5, 7, 4, 3]
3 14 14
Rails работает лучше всего, когда вы не боретесь со значениями по умолчанию. Какой вред приносит целочисленный первичный ключ в вашей таблице состояний?
Если вы не застряли с устаревшей схемой, которую вы не можете контролировать, я бы посоветовал вам придерживаться настроек Rails по умолчанию - соглашение о конфигурации , верно? - и сосредоточиться на важных частях вашего приложения, таких как пользовательский интерфейс и бизнес-логика.
У меня был небольшой опыт использования строки в качестве первичных ключей, и это боль в ***. Помните, что по умолчанию, если вы хотите передать объект с шаблоном default: controller /: action /: id, строка: id будет строкой, и это, вероятно, приведет к проблемам с маршрутизацией, если некоторые идентификаторы будут странно отформатированы;)
I'm working on a project that uses UUIDs as primary keys, and honestly, I don't recommend it unless you're certain you absolutely need it. There are a ton of Rails plugins out there that will not work unmodified with a database that uses strings as primary keys.
Вы хотите следовать Рельсовые соглашения. Дополнительный первичный ключ не является проблемой в любом случае. Просто используйте его.