我有Titanic数据集,而我想使用的数据框中的列是“ Embarked”和“ Sex”。
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
答案 0 :(得分:0)
一种方法是:
list_1 = ['C','Q','S']
list_2 = ['male','female']
X = [[x, y] for x in list_1 for y in list_2]
答案 1 :(得分:0)
如果您要从数据框中两列的唯一值中查找产品,然后将它们转换为列表,那么就可以做到!
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
为您提供一系列可迭代项的笛卡尔积。这里的可迭代项是通过在DataFrame的每个列上调用Series.unique()
来获取其唯一值而创建的列表。
最后,list comprehension
将itertools.product
的典型的元组列表返回变成列表列表。