使用基于现有列的值将新列添加到数据框

时间:2020-10-29 12:22:06

标签: python pandas dataframe

我将如何遍历数据框并添加一个新列,其中包含基于各行中现有列是否具有相同值的值?

例如,在下面的数据框中,我想在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)

2 个答案:

答案 0 :(得分:1)

如果需要检查是否所有列都为1,请使用DataFrame.all并将其转换为整数,如果数据仅为10,则可以使用:

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'])