Сравните каждое из значений столбца и верните окончательное значение в зависимости от условий - PullRequest
0 голосов
/ 25 сентября 2018

У меня в настоящее время есть фрейм данных, который выглядит следующим образом:

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

Я хочу применить некоторое условие к значениям столбца и вернуть окончательный результат в новом столбце.

Условие состоит в том, чтобы назначать значения на основе этого порядка приоритета, где 2 является первым приоритетом: [2,1,3,0,4]

Я пытался определить функцию для добавления окончательных результатов, но не смогна самом деле куда угодно ... есть мысли?

Желаемый результат будет выглядеть примерно так:

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

, где col4 - новый созданный столбец.

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

возможно чуть позже.

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
0 голосов
/ 25 сентября 2018

сначала вы можете попробовать использовать 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)

Output :

     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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...