user14140004
user14140004

Reputation: 25

Pandas swap column names with column values

I have a df that looks like this:

User Chat_People Talk_People Schedule_Time
1    first       second      third
2    second      third       first

I want to convert it to look like:

User First         Second       Third
1    Chat_People   Talk_People  Schedule_Time
2    Schedule_Time Chat_People  Talk_People

I tried doing:

df["First"] = df.apply((lambda x: col_name for col_name in ["Chat_People","Talk_People","Schedule_Time"] if x[col_name] == "first"), axis=1)

But am running into:

TypeError: cannot create 'generator' instances

Any help would be much appreciated!

Upvotes: 0

Views: 77

Answers (1)

BENY
BENY

Reputation: 323226

melt then pivot

out = df.melt('User').pivot('User','value','variable').reset_index()
out
value  User          first       second          third
0         1    Chat_People  Talk_People  Schedule_Time
1         2  Schedule_Time  Chat_People    Talk_People

Upvotes: 4

Related Questions