Panda DataFrame объединяет уникальные значения в два столбца для подгонки OrdinalEncoder - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть набор данных и столбцы Титаника в кадре данных, которые я хотел бы использовать: «Запущено» и «Пол».

df['Embarked'] и df['Sex'] имеют уникальное значение: Embarked['C','Q','S'] и Sex['male','female']

Что я хотел бы сделать, это создать список, как показано ниже:

[['S','female'],['S','male'],['C','female'],['c','male'],['Q','female'],['Q','male']]

Мне нужна уникальная комбинация значений в формате списка, чтобы я мог перейти к OrdinalEncoder, чтобы соответствовать.

Scikit Learn OrdinalEncoder пример:

from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder()
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)

enc.categories_

enc.transform([['Female', 3], ['Male', 1],['Female',2],['Male',3]])

преобразование кодера занимает только list

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

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

import pandas as pd
from itertools import product

data = pd.DataFrame([['Q', 'male'], ['Q', 'male'], ['S', 'female'], 
                     ['S', 'female'], ['S', 'male'], ['C', 'female'], 
                     ['C', 'female'], ['C', 'male'], ['C', 'male']],
                    columns=['Embarked', 'Sex'])

print([list(x) for x in product(data['Embarked'].unique(), data['Sex'].unique())])

itertools.product даетВы декартово произведение последовательности итераций.Наши итераторы здесь - это списки, создаваемые путем вызова Series.unique() в каждом из столбцов DataFrame, чтобы получить их уникальные значения.

Наконец, list comprehension превращает itertools.product типичное возвращение списка кортежей в список списков.

0 голосов
/ 19 декабря 2018

способ сделать это:

list_1 = ['C','Q','S']
list_2 = ['male','female']
X = [[x, y] for x in list_1 for y in list_2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...