如何在给定条件下替换数据框列?

时间:2018-03-30 08:54:55

标签: python pandas dataframe

我有一个Dataframe,其中我有两列,first_columns和second_columns。 first_columns是id,second_columns是房间号。 enter image description here

从图片中可以看出,特定身份证的人在不同的房间号码上服务。现在我想在给定条件下将所有second_columns列替换为1和0

1)如果特定的first_columns列ID人员不在9,10和11中提供服务,则将所有房间号码替换为1,如果他工作则将所有房间号码替换为0。

在上面的图片中,first_columns id 3737 doest在9,10和11室不起作用。然后3737房间号码的所有行将被1替换。

1 个答案:

答案 0 :(得分:1)

我认为需要groupbytransform进行比较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