Pandas Panda DataFrame在两列中组合唯一值,以实现OrdinalCoder拟合

Pandas Panda DataFrame在两列中组合唯一值,以实现OrdinalCoder拟合,pandas,dataframe,Pandas,Dataframe,我有泰坦尼克号数据集,我想在数据框中使用的列是“登船”和“性” df['counted']和df['Sex']具有唯一值:counted['C'、'Q'、'S']和Sex['male'、'female'] 我想做的是创建如下列表: [['S','female'],['S','male'],['C','female'],['c','male'],['Q','female'],['Q','male']] 我需要列表格式的唯一值组合,以便我可以传递到OrdinalEncoder以适应 Scikit学

我有泰坦尼克号数据集,我想在数据框中使用的列是“登船”和“性”

df['counted']
df['Sex']
具有唯一值:
counted['C'、'Q'、'S']
Sex['male'、'female']

我想做的是创建如下列表:

[['S','female'],['S','male'],['C','female'],['c','male'],['Q','female'],['Q','male']]
我需要列表格式的唯一值组合,以便我可以传递到
OrdinalEncoder
以适应

Scikit学习普通编码器示例:

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_1 = ['C','Q','S']
list_2 = ['male','female']
X = [[x, y] for x in list_1 for y in list_2]

如果您希望从数据帧中两列的唯一值中查找产品,然后将它们转换为列表,那么这就可以做到

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
提供一系列iterables的笛卡尔乘积。这里的iterables是通过在数据框的每个列上调用
Series.unique()
来获得其唯一值而创建的列表


最后,
列表理解
itertools.product
典型的元组列表返回转换为列表列表。

您的问题不清楚,能否提供更多细节?例如,给定示例输入的所需输出您是否尝试使用一个表示所有成对连词的顺序变量?嗨,Igor,没错!嗨,Yuca,我想把两列的唯一值结合起来,有没有自动化的方法,而不是手动将数据放入数据框?是的,这只是给你一个可重复的例子。您可以将.csv作为数据帧读入,执行
pd.read\u csv(文件路径)