Home > Software design >  Ifelse leaving other observations as is
Ifelse leaving other observations as is

Time:10-29

In R and tidy verse, there is a way to use ifelse() such that I can change several of the observations in a variable but then I can leave other observations that I don't want changed as they are but just setting else to that column (so in the example below, "Virginica and "Versicolor" would remain the same. Can't figure out how to do that in pandas.

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')

Minimal reproducible example:

iris\
.assign(new_species = iris['species'].apply(lambda x: "set" if x=="setosa" else species))

This comes up with an error and if I put species in quotes, "species" becomes the actual observation.

Thanks much!

James

CodePudding user response:

Use replace:

iris['new_spicies'] = iris['species'].replace('setosa', 'set')

Output:

     sepal_length  sepal_width  petal_length  petal_width    species new_spicies
0             5.1          3.5           1.4          0.2     setosa         set
1             4.9          3.0           1.4          0.2     setosa         set
2             4.7          3.2           1.3          0.2     setosa         set
3             4.6          3.1           1.5          0.2     setosa         set
4             5.0          3.6           1.4          0.2     setosa         set
..            ...          ...           ...          ...        ...         ...
145           6.7          3.0           5.2          2.3  virginica   virginica
146           6.3          2.5           5.0          1.9  virginica   virginica
147           6.5          3.0           5.2          2.0  virginica   virginica
148           6.2          3.4           5.4          2.3  virginica   virginica
149           5.9          3.0           5.1          1.8  virginica   virginica

[150 rows x 6 columns]
  • Related