我有泰坦尼克号的数据集和数据框中的列,我想使用的是‘登船’和‘性’。
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学习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
发布于 2018-12-19 05:28:37
如果您想要的是从dataframe中两列的唯一值中找到产品,然后将它们转换为列表,那么下面的代码就可以做到这一点!
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
的典型返回元组列表转换为列表列表。
发布于 2018-12-19 05:22:37
一种方法是:
list_1 = ['C','Q','S']
list_2 = ['male','female']
X = [[x, y] for x in list_1 for y in list_2]
https://stackoverflow.com/questions/53841039
复制相似问题