使用基于一系列列的条件创建熊猫列

时间:2021-06-08 06:58:37

标签: python pandas

我想添加一个新列,如果 5 列的范围都具有相同的值,则它将具有该值。否则会出现“错误”。

从这里:

|1 1 1 1 1|
|2 2 2 2 2|
|0 1 2 2 1|
|z z z z z|

为此:

|1 1 1 1 1| 1
|2 2 2 2 2| 2
|0 1 2 2 1| Error
|z z z z z| z

有没有办法在不迭代每一行的情况下做到这一点?

1 个答案:

答案 0 :(得分:2)

使用 #numpy.whereDataFrame.nunique 测试相同的值:

df['new'] = np.where(df.nunique(axis=1).eq(1), df.iloc[:, 0], 'error')

或者为了更好的性能测试第一列,如果所有列的值相同:

df['new'] = np.where(df.eq(df.iloc[:, 0], axis=0).all(1), df.iloc[:, 0], 'error')
print (df)
   0  1  2  3  4    new
0  1  1  1  1  1      1
1  2  2  2  2  2      2
2  0  1  2  2  1  error
3  z  z  z  z  z      z