gpt4 book ai didi

python - 在 Pandas 中使用因式分解来覆盖缺失案例时设置先验水平

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:58 25 4
gpt4 key购买 nike

我了解如何使用因式分解将因素的级别(例如“L”和“W”(表示输赢))编码为数值,例如“0”和“1”:

import pandas as pd
first_df = pd.DataFrame({'outcome': ["L", "L", "W", "W"]})
pd.factorize(first_df['outcome'])

以上返回 (array([0, 0, 1, 1]), array(['L', 'W'], dtype=object))

然而,稍后,我想将这个结果与其他一些结果结合起来,我们现在有一个新的结果,平局(“D”),这里是事情变得棘手的地方:

second_df = pd.DataFrame({'outcome': ["L", "L", "D", "D"]})
pd.factorize(second_df['outcome'])

返回 (array([0, 0, 1, 1]), array(['L', 'D'], dtype=object))

我需要一些方法来预先声明创建数据帧时存在 3 个不同级别的事实,并将正确的数值映射到正确的级别。我怎样才能做到这一点?

最佳答案

使用 Categorical 绝对可以实现这样的事情:

outcome_cat = pd.Categorical(
first_df['outcome'],
categories=['L', 'W', 'D'], ordered=False
)

Categorical 的语义可能与 pd.factorize() 的输出不完全相同,但 codes 属性包含您的数据作为数值,只是 Categorical 也知道未观察到的 'D' 值:

outcome_cat.codes
Out[6]: array([0, 0, 1, 1], dtype=int8)

关于python - 在 Pandas 中使用因式分解来覆盖缺失案例时设置先验水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26965246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com