简体   繁体   English

从 R 到 Python:ifelse 条件突变 dataframe

[英]From R to Python: ifelse conditional in mutate dataframe

As a beginer in Python, I'm trying to reference similar R-sintax for a task of data wrangling in a pandas DataFrame, but this have not been successful for the ifelse statement inside a mutate function. As a beginer in Python, I'm trying to reference similar R-sintax for a task of data wrangling in a pandas DataFrame, but this have not been successful for the ifelse statement inside a mutate function.

# R code
df <- data.frame(var1 = c('2020-12-01','2020-12-02',NA,NA,'2020-12-05'), 
                 var2 = c('start','start','start','start','start')
                 stringsAsFactors = F)

df <- df %>% dplyr::mutate(var2 = ifelse(!is.na(var1), 'complete', var1))

Some advice about the way to obtain the same result using Python-sintax?关于使用 Python-sintax 获得相同结果的方法的一些建议?

Try with numpy.where尝试使用numpy.where

df.var2 =  np.where(df.var1.isnull(), np.nan, 'complete')

Or another option that is similar to base R is create a logical index and use that in replacement或者类似于base R的另一个选项是创建一个逻辑索引并使用它来替换

i1 = df.var1.isnull() 
df.loc[i1, 'var2'] = np.nan
df.loc[~i1, 'var2'] = 'complete'

-output -输出

df
#         var1  var2
#0  2020-12-01  complete
#1  2020-12-02  complete
#2         NaN       NaN
#3         NaN       NaN
#4  2020-12-05  complete

data数据

import numpy as np
import pandas as pd
df = pd.DataFrame({"var1":['2020-12-01','2020-12-02',np.nan,np.nan,'2020-12-05'],
        "var2": ['start','start','start','start','start']})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM