8

I'm trying to map the following function over a pandas dataframe (basically a list) in python 2.7:

df["Cherbourg"] = df["Embarked"].map(lambda x: if (x == "C") 1 else 0)

But python errors saying using a lambda function like this is a syntax error. Is there some way to map an if statement like this in python?

BrandonM
  • 789
  • 2
  • 9
  • 18

3 Answers3

20

Try

lambda x: 1 if x == "C" else 0

possible duplicate of Is there a way to perform "if" in python's lambda

Example :

map(lambda x: True if x % 2 == 0 else False, range(1, 11))

result will be - [False, True, False, True, False, True, False, True, False, True]

Community
  • 1
  • 1
pnv
  • 2,545
  • 3
  • 26
  • 35
4

It will be simpler to just do this:

df["Cherbourg"] = (df["Embarked"] == "C").astype('int)
EdChum
  • 294,303
  • 173
  • 671
  • 486
0

df["Cherbourg"] = df["Embarked"].apply(lambda x:1 if x == 'C' else 0)

raghu
  • 1
  • 1
    This solution may work but please add some explanation to support this code solution. Also, please format the code inside backticks (`\``) – tshimkus Sep 11 '20 at 17:42
  • I doubt that this helps or even works at all. Would you like to add an explanation? – Yunnosch Sep 28 '20 at 16:32