首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的分类变量没有被正确的映射。

我的分类变量没有被正确的映射。
EN

Stack Overflow用户
提问于 2022-05-24 23:34:01
回答 1查看 60关注 0票数 0

我希望这条消息能找到你。由于分类变量是大类型的,所以我一直试图将分类变量映射到它们相应的值。但是,由于错误,它们没有被正确地映射。我的分类变量如下:#从现在起,我们已经去掉了空值。我们会处理分类栏

代码语言:javascript
运行
复制
df["material_spec"].unique()

array(['Material_1', 'Material_0', 'Material_2', 'Material_3',
       'Material_4', 'Material_5', 'Material_6', 'Material_7',
       'Material_8', 'Material_9', 'Material_10', 'Material_11',
       'Material_12', 'Material_13', 'Material_14', 'Material_15',
       'Material_16', 'Material_17', 'Material_18', 'Material_19',
       'Material_20', 'Material_21', 'Material_22', 'Material_23',
       'Material_24', 'Material_25', 'Material_26', 'Material_27',
       'Material_29', 'Material_30', 'Material_31', 'Material_32',
       'Material_33', 'Material_34', 'Material_35', 'Material_36',
       'Material_37', 'Material_38', 'Material_39', 'Material_40',
       'Material_42', 'Material_43', 'Material_44', 'Material_45',
       'Material_47', 'Material_48'], dtype=object)

要映射的代码如下:

代码语言:javascript
运行
复制
d = dict()
for i in range(len(df["material_spec"].unique())):
    d.update({f'Material_{i}':i})

由此产生的产出如下:

代码语言:javascript
运行
复制
{'Material_0': 0, 'Material_1': 1, 'Material_2': 2, 'Material_3': 3, 'Material_4': 4, 'Material_5': 5, 'Material_6': 6, 'Material_7': 7, 'Material_8': 8, 'Material_9': 9, 'Material_10': 10, 'Material_11': 11, 'Material_12': 12, 'Material_13': 13, 'Material_14': 14, 'Material_15': 15, 'Material_16': 16, 'Material_17': 17, 'Material_18': 18, 'Material_19': 19, 'Material_20': 20, 'Material_21': 21, 'Material_22': 22, 'Material_23': 23, 'Material_24': 24, 'Material_25': 25, 'Material_26': 26, 'Material_27': 27, 'Material_28': 28, 'Material_29': 29, 'Material_30': 30, 'Material_31': 31, 'Material_32': 32, 'Material_33': 33, 'Material_34': 34, 'Material_35': 35, 'Material_36': 36, 'Material_37': 37, 'Material_38': 38, 'Material_39': 39, 'Material_40': 40, 'Material_41': 41, 'Material_42': 42, 'Material_43': 43, 'Material_44': 44}

它遗漏了45,47和48的最后三个变量。我知道当我使用len(material_spec)时,总数为44,这就是为什么它只映射到44个变量,但是有什么方法可以进一步改进它。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-05-25 00:46:32

您的唯一Material_数组与您正在索引的事实之间存在不一致,并且假设范围中的所有数字都存在于您的唯一数组中。您的df["material_spec"].unique()输出缺少Material_ 28、41和46。然后,根据长度进行索引,假设它们都是数字存在的,因此它似乎在结尾处下降。从数字上看,你应该有49人在名单中,但实际上只有46人。你的字典有45个条目(基于0).虽然无法解释为什么这是一次从46独特。

当我运行您的代码时,两个代码中都有46个条目。虽然我不能复制.unique()调用,因为我没有原始数据。

只需使用实际的唯一值,只需执行以下操作:

代码语言:javascript
运行
复制
{e: int(e.split('_')[1]) for e in df["material_spec"].unique()}

{'Material_0': 0,
 'Material_1': 1,
 'Material_2': 2,
 'Material_3': 3,
 'Material_4': 4,
 'Material_5': 5,
 'Material_6': 6,
 'Material_7': 7,
 'Material_8': 8,
 'Material_9': 9,
 'Material_10': 10,
 'Material_11': 11,
 'Material_12': 12,
    ...
 'Material_39': 39,
 'Material_40': 40,
 'Material_42': 42,
 'Material_43': 43,
 'Material_44': 44,
 'Material_45': 45,
 'Material_47': 47,
 'Material_48': 48}

注意,此输出字典中的键不包含41和46,这与输入唯一键匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72370509

复制
相关文章

相似问题

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