在Pandas中基于两列的bucket ?



假设我们有一个至少有两列的数据框,其中有两列我们想要用来创建一个新列。在这种情况下,假设两个列都是一个特征的布尔值,我们想要一个列存储4个组合。标签可以是0 - 3但不一定是F,F可以和T T在同一个桶里。如何在Pandas中对其进行编码?我很有兴趣知道如何将其推广到非布尔值,如浮点数或整数。此外,有特定的标签也会有所帮助,例如,代替0-3可能"prospecting", " sales ", "pending", "closed"

我想要的一个示例数据框架可以是…

<表类> feature_1 feature_2 feature_1_2_bucket tbody><<tr>假对3真正假1假假2真正对0

受此启发的示例应该有所帮助:

>>> a = pd.DataFrame({"names":['a','b','c'], "v1": np.random.choice([True,False], size=3),
"v2":np.random.choice([True,False], size=3)})
>>> a
names     v1     v2
0     a  False   True
1     b   True  False
2     c  False   True
>>> b = {(True, True): 0, (True, False):1, (False, True): 2, (False, False): 3}
>>> a['v3'] = a.set_index(['v1', 'v2']).index.map(b.get)
>>> a
names     v1     v2  v3
0     a  False   True   2
1     b   True  False   1
2     c  False   True   2

要获得v3中的其他值,只需更改字典b中的值。

最新更新