Python 基于熊猫中两列的扣合?
假设我们有一个dataframe,至少有两列,并且有两列我们想用来创建一个新列。在本例中,假设两个列都是某个特征的布尔值,我们需要一个包含4个组合的列。标签可以是0-3,但不必是F,F可能与T,T具有相同的桶。通常如何在熊猫中对其进行编码?我很想知道如何将其推广到非布尔值,如float或int。另外,有特定的标签也会很有帮助,例如,代替0-3可能是“prospecting”、“sale”、“pending”、“closed” 我想要的数据帧示例可能是 特征1 特征2 特征_1_2_桶 假的 真的 3. 真的 假的 1. 假的 假的 2. 真的 真的 0 这个受启发的例子应该有助于:Python 基于熊猫中两列的扣合?,python,python-3.x,pandas,Python,Python 3.x,Pandas,假设我们有一个dataframe,至少有两列,并且有两列我们想用来创建一个新列。在本例中,假设两个列都是某个特征的布尔值,我们需要一个包含4个组合的列。标签可以是0-3,但不必是F,F可能与T,T具有相同的桶。通常如何在熊猫中对其进行编码?我很想知道如何将其推广到非布尔值,如float或int。另外,有特定的标签也会很有帮助,例如,代替0-3可能是“prospecting”、“sale”、“pending”、“closed” 我想要的数据帧示例可能是 特征1 特征2 特征_1_2_桶 假的 真的
>>> 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
中的值即可