首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OrdinalEncoder DataFrame在两列中组合唯一值以进行Panda

OrdinalEncoder DataFrame在两列中组合唯一值以进行Panda
EN

Stack Overflow用户
提问于 2018-12-19 05:04:52
回答 2查看 85关注 0票数 0

我有泰坦尼克号的数据集和数据框中的列,我想使用的是‘登船’和‘性’。

df['Embarked']df['Sex']具有唯一的值:Embarked['C','Q','S']Sex['male','female']

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

代码语言:javascript
复制
[['S','female'],['S','male'],['C','female'],['c','male'],['Q','female'],['Q','male']]

我需要列表格式的唯一值组合,这样我才能传递给OrdinalEncoder

Scikit学习OrdinalEncoder示例:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-19 05:28:37

如果您想要的是从dataframe中两列的唯一值中找到产品,然后将它们转换为列表,那么下面的代码就可以做到这一点!

代码语言:javascript
复制
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 comprehensionitertools.product的典型返回元组列表转换为列表列表。

票数 0
EN

Stack Overflow用户

发布于 2018-12-19 05:22:37

一种方法是:

代码语言:javascript
复制
list_1 = ['C','Q','S']
list_2 = ['male','female']
X = [[x, y] for x in list_1 for y in list_2]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53841039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档