在pandas系列中使用if/else根据条件创建新系列

use*_*ser 0 python series pandas

我有一只熊猫df.假设我有一个"活动"列,可以是"有趣"或"工作",我想将其转换为整数.我所做的是:

df["activity_id"] = 1*(df["activity"]=="fun") + 2*(df["activity"]=="work") 
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为我不知道如何将if/else放在那里(如果你有10个活动,它会变得复杂).

但是,说我现在有相反的问题,我想从id转换为字符串,我不能再使用这个技巧,因为我不能将字符串与布尔值相乘.我该怎么做?有没有办法使用if/else?

Ted*_*rou 5

您可以创建一个字典,其中id为键,字符串为值,然后使用mapseries方法将整数转换为字符串.

my_map = {1:'fun', 2:'work'}

df['activity']= df.activity_id.map(my_map)
Run Code Online (Sandbox Code Playgroud)