我目前有一个看起来像这样的数据框:
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是创建的新列。
谢谢
答案 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