我将如何遍历数据框并添加一个新列,其中包含基于各行中现有列是否具有相同值的值?
例如,在下面的数据框中,我想在Col1和Col2包含1的行中添加一个包含1的新列,如果它们都不全部包含1,则添加0。
Col1 Col2
1 1
1 1
1 0
0 0
0 1
1 1
1 1
我想要的输出是
Col1 Col2 Col3
1 1 1
1 1 1
1 0 0
0 0 0
0 1 0
1 1 1
1 1 1
理想情况下,将来可以扩展到更多列(如果所有列均包含1,则新列仅包含1)
答案 0 :(得分:1)
如果需要检查是否所有列都为1
,请使用DataFrame.all
并将其转换为整数,如果数据仅为1
和0
,则可以使用:
df['col3'] = df.all(axis=1).astype(int)
如果仅需要测试1
,则为==
使用DataFrame.eq
来处理任何数据:
df['col3'] = df.eq(1).all(axis=1).astype(int)
如果要选择要检查的列,请添加子集:
cols = ['Col1', 'Col2']
df['col3'] = df[cols].all(axis=1).astype(int)
或者:
df['col3'] = df[cols].eq(1).all(axis=1).astype(int)
答案 1 :(得分:1)
如果只有0和1,请尝试使用Series.mul
df['Col3'] = df['Col1'].mul(df['Col2'])