I have the following dataframe in pandas and want to write a if statement to compare name with new-name and print identifier , person-name, new-identifier , new-person
| identifier | person-name | type | name | new-identifier | new-person | new-type | new-name |
|---|---|---|---|---|---|---|---|
| (hockey, player) | sidney crosby | athlete | sidney | (pittsburg, player) | crosby-sidney | player | SC |
| (hockey, player) | sidney crosby | athlete | sidney | (pittsburg, player) | crosby-sidney | player | MS |
| (hockey, player) | wayne gretzky | athlete | wayne | (oilers, player) | gretzky-wayne | player | WG |
| (hockey, player) | wayne gretzky | athlete | wayne | (oilers, player) | gretzky-wayne | player | TP |
I need help writing the if statement in pandas; if sidney = SC, output output would be:
| identifier | person-name | new-identifier | new-person |
|---|---|---|---|
| (hockey, player) | sidney crosby | (pittsburg, player) | crosby-sidney |
df[person-name].equals(df[new-person])
wouldn’t work since I’m comparing contents in the column rather than the entire column. How can I compare the contents of those 2 columns and print the 4 columns
>Solution :
IIUC, you can use
out = df[df['name'].eq('sidney') & df['new-name'].eq('SC')]
To output specific column, you can use
out = df[df['name'].eq('sidney') & df['new-name'].eq('SC')].filter(regex='identifier|person')