Выберите подмножество ячейки типа объекта в панде. - PullRequest
1 голос
/ 11 апреля 2020

Я пытаюсь выбрать подмножество ячеек столбца типа объекта с помощью str.split (pat = "'")

dataset['pictures'].str.split(pat=",")

Я хочу получить значения чисел 40092 и 39097 и два даты изображений в виде двух столбцов ID и DATE, но в результате я получаю один столбец, состоящий из NaN.

'pictures' column:
{"col1":"40092","picture_date":"2017-11-06"}
{"col1":"39097","picture_date":"2017-10-31"}
...

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Спасибо за ответы, но я решил эту проблему, загрузив столбец 'pictures' из набора данных в список:

picturelist= dataset['pictures'].values.tolist()

И после этого создал фрейм данных из списка столбцов и соединил его с исходным набором данных без графического столбца

two_new_columns = pd.Dataframe(picturelist)
new_dataset = pd.concat(dataset, two_new_columns)
0 голосов
/ 12 апреля 2020

Вот что я понял из вашего вопроса:

У вас есть pandas Dataframe с одним из столбцов, содержащих json строк (или любой другой строкой, которую необходимо проанализировать в несколько столбцов)

Например,

df = pd.DataFrame({'pictures': [
    '{"col1":"40092","picture_date":"2017-11-06"}',
    '{"col1":"39097","picture_date":"2017-10-31"}']
     })

. Вы хотите разделить два элемента ('col1' и 'picture_date') на два отдельных столбца для дальнейшей обработки (или, возможно, только один из них)

Определите функцию для разбора строки:

import json

def parse_row(r):
  j=json.loads(r['pictures'])
  return j['col1'],j['picture_date']

И используйте метод Pandas DataFrame.apply() следующим образом

df1=df.apply(parse_row, axis=1,result_type='expand')

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

        0           1
 0  40092  2017-11-06
 1  39097  2017-10-31

Если вам нужен только один столбец, вы можете вернуть один элемент из parse_row (вместо двухэлементного кортежа в приведенном выше примере) и просто использовать df.apply(parse_row).

Если значения не в формате json, просто измените parse_row соответственно (Разделить, преобразовать строку в числа и т. Д. c.)

...