[英]Bucketing based on two columns in Pandas?
假设我们有一个 dataframe 至少有两列,并且我们要使用两列来创建一个新列。 在这种情况下,假设两列都是 boolean 值的特征,我们想要一个包含 4 个组合的列。 标签可以是 0 - 3,但不必是 F,F 可能与 T,T 具有相同的桶。 这通常如何在 Pandas 中编码? 我很想知道如何将其推广到非布尔值,例如浮点数或整数。 也有特定的标签会有所帮助,即而不是 0-3 可能是“勘探”、“销售”、“待定”、“关闭”。
我想要的一个例子 dataframe 可能是......
特征_1 | 特征_2 | feature_1_2_bucket |
---|---|---|
错误的 | 真的 | 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
中的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.