извлечение значений по ключевым словам в столбце панд - PullRequest
0 голосов
/ 27 июня 2018

У меня есть столбец, который является списком словаря. Я извлек только значения по имени ключа и сохранил его в список. Поскольку мне нужно запустить столбец в tfidVectorizer, мне нужно, чтобы столбцы были строкой слов. Мой код выглядит следующим образом.

def transform(s,to_extract):
return [object[to_extract] for object in json.loads(s)]

cols = ['genres','keywords']

for col in cols:
    lst = df[col]
    df[col] = list(map(lambda x : transform(x,to_extract='name'), lst))
    df[col] = [', '.join(x) for x in df[col]]

для тестирования, вот 2 строки.

data = {'genres': [[{"id": 851, "name": "dual identity"},{"id": 2038, "name": "love of one's life"}],
               [{"id": 5983, "name": "pizza boy"},{"id": 8828, "name": "marvel comic"}]],
    'keywords': [[{"id": 9663, "name": "sequel"},{"id": 9715, "name": "superhero"}],
                [{"id": 14991, "name": "tentacle"},{"id": 34079, "name": "death", "id": 163074, "name": "super villain"}]]
   }

df = pd.DataFrame(data)

Я могу извлечь необходимые данные и сохранить их соответствующим образом. Тем не менее, я считаю, что коды слишком многословны, и я хотел бы знать, есть ли более питонный способ достичь того же результата?

Желаемый вывод одной строки должен быть строкой, разделенной только запятой. Например, «Двойная идентичность, любовь к жизни».

1 Ответ

0 голосов
/ 27 июня 2018

Это то, что вам нужно?

df.applymap(lambda x : pd.DataFrame(x).name.tolist())
Out[278]: 
                                genres                   keywords
0  [dual identity, love of one's life]        [sequel, superhero]
1            [pizza boy, marvel comic]  [tentacle, super villain]

Обновление

df.applymap(lambda x : pd.DataFrame(x).name.str.cat(sep=','))
Out[280]: 
                             genres                keywords
0  dual identity,love of one's life        sequel,superhero
1            pizza boy,marvel comic  tentacle,super villain
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...