I have a pandas dataframe that looks like this:
   portion  used 0        1   1.0 1        2   0.3 2        3   0.0 3        4   0.8   I'd like to create a new column based on the used column, so that the df looks like this: 
   portion  used    alert 0        1   1.0     Full 1        2   0.3  Partial 2        3   0.0    Empty 3        4   0.8  Partial   alert column based onused is 1.0, alert should be Full.used is 0.0, alert should be Empty.alert should be Partial.What's the best way to do that?
You can use the assign() function to add a new column to the end of a pandas DataFrame: df = df. assign(col_name=[value1, value2, value3, ...])
You can define a function which returns your different states "Full", "Partial", "Empty", etc and then use df.apply to apply the function to each row. Note that you have to pass the keyword argument axis=1 to ensure that it applies the function to rows.
import pandas as pd  def alert(row):   if row['used'] == 1.0:     return 'Full'   elif row['used'] == 0.0:     return 'Empty'   elif 0.0 < row['used'] < 1.0:     return 'Partial'   else:     return 'Undefined'  df = pd.DataFrame(data={'portion':[1, 2, 3, 4], 'used':[1.0, 0.3, 0.0, 0.8]})  df['alert'] = df.apply(alert, axis=1)  #    portion  used    alert # 0        1   1.0     Full # 1        2   0.3  Partial # 2        3   0.0    Empty # 3        4   0.8  Partial 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With