我有一个Dataframe,其中我有两列,first_columns和second_columns。 first_columns是id,second_columns是房间号。
从图片中可以看出,特定身份证的人在不同的房间号码上服务。现在我想在给定条件下将所有second_columns列替换为1和0
1)如果特定的first_columns列ID人员不在9,10和11中提供服务,则将所有房间号码替换为1,如果他工作则将所有房间号码替换为0。
在上面的图片中,first_columns id 3737 doest在9,10和11室不起作用。然后3737房间号码的所有行将被1替换。
答案 0 :(得分:1)
我认为需要groupby
与transform
进行比较set
s,最后反转掩码按~
并转换为整数:
df['new'] = ((~df.groupby('first_column')['second_column']
.transform(lambda x: set(x) >=set([9,10,11])))
.astype(int))
print (df)
first_column second_column new
0 3767 2 1
1 3767 4 1
2 3767 6 1
3 6282 2 0
4 6282 9 0
5 6282 10 0
6 6282 11 0
7 10622 0 1
8 13096 7 1
9 13096 10 1
10 13896 11 1