Условное присвоение значений столбцов в python - PullRequest
0 голосов
/ 14 октября 2019

Привет, у меня есть лист Excel с 3 столбцами, который я читаю в кадре данных df:

enter image description here

df печатается правильно.

Теперь мне нужно добавить 2 новых столбца на основе указанных выше 3 столбцов

enter image description here Ниже приведена функция, которую я написал для этого, и она не оценивается должным образом

def setData(FinalCombinedSet):
    if(df['age']==np.nan):
        df['Final Column']='age column blank'
        df['Mumbai category']='NO'
        return df
    elif(df['name']=='def' and df['place']=='Mumbai'):
        df['Final column'] = 'category Mumbai'
        df['Mumbai category']='YES'
        return df
    else:
        df['Final Column'] = 'Other values'
        df['Mumbai category']='NO'
        return  df
df=df.apply(lambda df:setData(df),axis=1)

1 Ответ

0 голосов
/ 14 октября 2019

Используйте np.select для векторизованного подхода:

import pandas as pd
import numpy as np

df = pd.DataFrame({"name":["abc","def","ghi"],
                   "age":["","20","22"],
                   "place":["Bangalore","Mumbai","Mumbai"]})

df["final column"] = np.select([df["age"]=="",(df["name"]=="def")&(df["place"]=="Mumbai")],
                               ['age column blank','category Mumbai'],
                               default="Other values")
df['Mumbai category'] = np.select([df["age"]=="",(df["name"]=="def")&(df["place"]=="Mumbai")],
                               ["NO","YES"],
                               default="NO")

print (df)

#
  name age      place      final column Mumbai category
0  abc      Bangalore  age column blank              NO
1  def  20     Mumbai   category Mumbai             YES
2  ghi  22     Mumbai      Other values              NO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...