比较每个列值并根据条件返回最终值

时间:2018-09-25 07:38:10

标签: python pandas function dataframe

我目前有一个看起来像这样的数据框:

  observeEvent(input$openRadioButton,{
    shell.exec("fileToOpenFromClientComputer.xlsx"))
    })

我想要做的是对列值应用一些条件,并在新列中返回最终结果。

条件是根据此优先级顺序分配值,其中2为第一优先级:[2,1,3,0,4]

我试图定义一个函数以附加最终结果,但是并没有真正到达目的地……有什么想法吗?

所需的结果类似于:

col1  col2  col3
 1      2     3
 2      3     NaN
 3      4     NaN
 2      NaN   NaN
 0      2     NaN

其中col4是创建的新列。

谢谢

2 个答案:

答案 0 :(得分:1)

首先,您可能想乘坐NaN:

df.fillna(5)

,然后将函数应用于每一行以找到您的值:

def func(x,l=[2,1,3,0,4,5]):
    for j in l:
      if(j in x):
         return j

df['new'] = df.apply(lambda x: func(list(x)),axis =1)

输出

     col1   col2    col3    new
  0   1      2        3      2    
  1   2      3        5      2
  2   3      4        5      3
  3   2      5        5      2
  4   0      2        5      2

答案 1 :(得分:0)

也许稍后。

import numpy as np
def f(x):
    for i in [2,1,3,0,4]:
        if i in x.tolist():
            return i
    return np.nan
df["col4"] = df.apply(f, axis=1)

和输出:

   col1  col2  col3  col4
0     1   2.0   3.0     2
1     2   3.0   NaN     2
2     3   4.0   NaN     3
3     2   NaN   NaN     2
4     0   2.0   NaN     2