当前位置: 首页 > 知识库问答 >
问题:

用同一类别编码多列的标签

轩辕佑运
2023-03-14
import pandas as pd
from sklearn.preprocessing import LabelEncoder

df = pd.DataFrame(data=[["France", "Italy", "Belgium"], ["Italy", "France", "Belgium"]], columns=["a", "b", "c"])
df = df.apply(LabelEncoder().fit_transform)
print(df)
   a  b  c
0  0  1  0
1  1  0  0

我的目标是通过传入我想要共享分类值的列,使其输出如下所示:

   a  b  c
0  0  1  2
1  1  0  2

共有1个答案

罗昱
2023-03-14

传递axis=1以对每一行调用labelencoder().fit_transform一次。(默认情况下,df.apply(func)为每列调用func一次)。

import pandas as pd
from sklearn.preprocessing import LabelEncoder

df = pd.DataFrame(data=[["France", "Italy", "Belgium"], 
                        ["Italy", "France", "Belgium"]], columns=["a", "b", "c"])

encoder = LabelEncoder()

df = df.apply(encoder.fit_transform, axis=1)
print(df)

产量

   a  b  c
0  1  2  0
1  2  1  0

或者,您可以使用make the data ofcategorydtype,并使用类别代码作为标签:

import pandas as pd

df = pd.DataFrame(data=[["France", "Italy", "Belgium"], 
                        ["Italy", "France", "Belgium"]], columns=["a", "b", "c"])

stacked = df.stack().astype('category')
result = stacked.cat.codes.unstack()
print(result)
   a  b  c
0  1  2  0
1  2  1  0
 类似资料:
  • 问题内容: 我正在尝试使用来编码一大串字符串标签。由于数据框有许多(50+)列,因此我想避免为每一列创建一个对象。我宁愿只有一个可以在我所有数据列中使用的大对象。 将整个数据投入会产生以下错误。请记住,我在这里使用伪数据。实际上,我正在处理大约50列的字符串标记数据,因此需要一种不按名称引用任何列的解决方案。 追溯(最近一次通话最近):文件中的行1,在第y行中= 中的第306行文件引发(“错误的输

  • 我正在尝试使用Scikit-Learn的来编码字符串标签的pandas。由于dataframe有许多(50+)列,我希望避免为每个列创建对象;我宁愿只有一个大的对象,它可以跨我的所有数据列工作。 将整个抛入会产生以下错误。请记住,我在这里使用的是虚拟数据;实际上,我正在处理大约50列字符串标记的数据,因此需要一个不引用任何列名称的解决方案。 回溯(最近一次调用):文件“”,第1行,在文件“/use

  • 我有这些数据 我想把它变成 < li >我想将列名用作< code>category列的值标签。 < li >每行最多只有一个< code>True值。 这就是MWE 我可以做 。但是,熊猫自己的工具不是有更优雅的方式吗?

  • 我想知道,在Spring AMQP中,是否可以根据负载类型在多个类中接收来自同一队列的消息。 我知道在类中使用@RabbitListener注释,然后将@RabbitHandler放在方法上,但我希望在保持单个队列的同时将消息处理的复杂性拆分为多个类。 当前使用的版本:Spring AMQP v2.0.3以及RabbitMQ。

  • 问题内容: 我正在Go中编写一个应用程序,该应用程序使用编码/目标在节点之间通过UDP发送结构和切片。它工作正常,但我注意到encoding / json也具有类似的API。搜索并找到以下信息(https://golang.org/pkg/encoding/): gob软件包gob管理gob的流-编码器(发送器)和解码器(接收器)之间交换的二进制值。 json程序包json实现RFC 4627中定

  • 我有一个数据集,它包含多个列,这些列的值是字符串格式的。现在我需要使用labelEncoder将这些文本列转换为数值。在下面的例子中,y是我的tain数据集的目标,A0到A13是不同的特征。还有50个特性,但我在这里提供了一个子集。现在,我如何将labelencoder应用于从A0到A8的数据集,并为创建模型创建一个新的编码数据帧?我知道我们可以像下面这样做,但这会说只编码一列。我希望编码器应用于