我有2列PandasDF:
col_A col_B
0 1
0 0
0 1
0 1
1 0
1 0
1 1
我想为col_A和col_B组合的每个值创建一个新列,类似于get_dummies()
,但唯一的变化是我在这里尝试使用列的组合
示例OP -在此列中,Col_A的值为0,col_B的值为1:
col_A_0_col_B_1
1
0
1
1
0
0
0
我目前正在使用iterrows()
迭代每一行以检查值,然后进行更改
有没有一个通常的Pandas较短的方法来实现这一点。
6条答案
按热度按时间daolsyd01#
将链式布尔掩码转换为整数:
为了获得更好的性能:
性能:取决于行数和
0
、1
值:一个二个一个一个
6psbrbz92#
您可以使用
np.where
uurity8g3#
首先创建列,然后分配,例如0表示False
df['col_A_0_col_B_1'] = 0
然后使用loc,您可以按where col_A == 0和col_B ==1进行过滤,然后将1赋给新列
df.loc[(df.col_A == 0) & (df.col_B==1),'col_A_0_col_B_1'] = 1
zc0qhyus4#
如果我没理解错的话,你可以这样做:
产出
或者作为替代:
mnowg1ta5#
您可以使用panda
~
表示布尔非,再加上1和0表示真和假。h43kikqp6#
我在Pandas中寻找类似于谷歌ML入门课程中使用的tensorflow “crossed_column”的东西,但没有找到。这将用于向 Dataframe 添加one-hot编码的特征crosses。所选列必须已经被有序编码/因子分解。