gpt4 book ai didi

pandas - 将分类变量级别更改为我提供的/合并级别两个分类变量

转载 作者:行者123 更新时间:2023-12-02 07:04:59 25 4
gpt4 key购买 nike

下面的情况经常出现在我的数据分析中。假设我从一些观察中得到了两个数据向量 x 和 y。 x 具有更多数据点,因此包含一些在 y 中未观察到的值。现在我想把它们变成分类变量。

x=['a','b','c','d','e']  #data points
y =['a','c','e'] #data of the same nature as x but with fewer data points

fx = pandas.Categorical.from_array(x)
fy = pandas.Categorical.from_array(y)

print fx.index
print fy.index

Categorical:
array([a, b, c, d, e], dtype=object)
Levels (5): Index([a, b, c, d, e], dtype=object) Categorical:
array([a, c, e], dtype=object)
Levels (3): Index([a, c, e], dtype=object)

我看到现在它们有不同的级别,标签表示不同的东西(1 在 fx 中表示 b 但在 fy 中表示 c)。

这显然使同时使用 fx 和 fy 的代码变得困难,因为他们期望 fx.labels 和 fy.labels 具有相同的编码/含义。

但我不知道如何“规范化”fx 和 fy 以便它们具有相同的级别并且 fx.lablesfy.lables 具有相同的编码。 fy.labels = fx.labables 显然是行不通的。如下所示,它改变了标签的含义 [a c e] 变成了 [a b c]。

fy.levels = fx.levels
print fy

Categorical:
array([a, b, c], dtype=object)
Levels (5): Index([a, b, c, d, e], dtype=object)

有没有人有什么想法?

另一个相关场景是我有一个现有的已知索引,并且想将数据分解到该索引中。例如,我知道每个数据点都必须取五个值之一 [a, b, c, d, e] 并且我已经有一个索引 Index([a, b, c, d, e] , dtype=object) 并且我想将向量 y=['a','c','e'] 分解为具有 Index([a, b, c, d, e ], dtype=object) 作为它的层次。我也不知道怎么做,希望有知道的人给点线索。

P.S 在 R 中做这样的事情是可能的,但很麻烦。

谢谢,汤姆

最佳答案

get_indexer() 方法可用于创建索引数组:

x=['a','b','c','d','e']  #data points
y =['a','c','e'] #data of the same nature as x but with fewer data points
idx = pd.Index(pd.unique(x+y))
cx = pd.Categorical(idx.get_indexer(x), idx)
cy = pd.Categorical(idx.get_indexer(y), idx)

关于pandas - 将分类变量级别更改为我提供的/合并级别两个分类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13978682/

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