Как разделить вложенный массив с не Джейсон-объектами столбца фрейма данных на разные столбцы? - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь разделить атрибуты, которые содержат массивы, на отдельные атрибуты в моем фрейме данных.Строки столбца фрейма данных, которые я хочу разделить, имеют следующую форму:

[
  {lockstatus=0, openstatus=0, enablestatus=0},
  {lockstatus=0, openstatus=0, enablestatus=0},
  {lockstatus=0, openstatus=0, enablestatus=0},
  {lockstatus=0, openstatus=0, enablestatus=0},
  {lockstatus=0, openstatus=0, enablestatus=0},
  {lockstatus=0, openstatus=0, enablestatus=0},
  {lockstatus=0, openstatus=0, enablestatus=0},
  {lockstatus=0, openstatus=0, enablestatus=0},
  {lockstatus=0, openstatus=0, enablestatus=0},
  {lockstatus=0, openstatus=0, enablestatus=0}
]

Есть ли способ отделить эти атрибуты, когда они определены с = вместо :.

Примечание: json.normalize функция не работает для меня, потому что объекты определены с = вместо :.

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Я не мог понять, откуда эти данные. Это не допустимый синтаксис Python и не json. У вас есть файл, содержащий эти данные в виде строки?

Если у вас есть такой файл, вы можете преобразовать "=" в ":" с помощью:

with open("myfile.someextension") as file:
    file_str = file.read()

replace_equal_to_colon = file_str.replace("=", ":")

with open("write_changed_str_back.someextension", "w") as file:
    file.write(replace_equal_to_colon)

После этого у вас есть правильный синтаксис, и вы можете делать с ним все, что захотите.

0 голосов
/ 09 мая 2019

Вы можете попробовать заменить '=' на ':' в столбце данных и нормализовать его.

df['column_name'] = df['column_name'].str.replace('=',':')
...