I have a dataframe with a column called player_traits
, which contains traits for each player, e.g. 'Injury Prone', 'Long Shot Taker', 'Power Header' etc.
I want to change this column so that if 'Injury Prone' is present the cell's value is converted to 1, and if 'Injury Prone' is not present the cell's value is converted 0
Any tips much appreciated
CodePudding user response:
import pandas as pd
x = pd.DataFrame({"player_traits": ['Injury Prone', 'Long Shot Taker', 'Power Header']})
The data:
player_traits
0 Injury Prone
1 Long Shot Taker
2 Power Header
We can use the following code:
x["player_traits"] = (x["player_traits"] == "Injury Prone").astype(int)
Which gives:
player_traits
0 1
1 0
2 0
CodePudding user response:
This will cycle through all of your different traits and assign a binary value for them:
###### Recreate OP's data########
import pandas as pd
traits = ['Injury Prone', 'Long Shot Taker', 'Power Header']
players = ["Player1", "Player2"]
player_traits = ['Injury Prone, Long Shot Taker', 'Power Header']
df = pd.DataFrame({"Player":players, "Player_Traits":player_traits})
#################################
pTraits = []
for x in df.Player_Traits:
binary = "".join(["1" if y in x else "0" for y in traits])
pTraits.append(binary)
df["Binary"] = pTraits
df
Ouput:
Player Player_Traits Binary
0 Player1 Injury Prone, Long Shot Taker 110
1 Player2 Power Header 001
You can also change df["Binary"] = pTraits
to df["Player_Traits"] = pTraits
to replace all of the values in the Player_Traits column with their respective Binary... Ouput:
Player Player_Traits
0 Player1 110
1 Player2 001