如何将值设置为布尔过滤的dataframe列的行

时间:2013-10-21 14:20:25

标签: python pandas

我试图设置" FreeSec"的值。我的pandas数据帧的已过滤行的True列。这是代码:

data[data["Brand"].isin(group_clients)].FreeSec = True

但是,当我检查值时,它们仍然设置为False

>>> data[data["Brand"].isin(group_clients)].FreeSec

12     False
163    False
164    False
165    False
166    False
167    False
168    False
169    False

我在这里缺少什么?

2 个答案:

答案 0 :(得分:14)

您应该使用loc来执行而不进行链接,这将使该任务有效:

data.loc[data["Brand"].isin(group_clients), "FreeSec"] = True

重写了loc中的赋值,以便实际上a view or a copy的实现细节无关紧要,如果你链接就这么重要,所以要避免/小心。

答案 1 :(得分:2)

它以其他方式运作:

data["FreeSec"][data["Brand"].isin(group_clients)] = True

我不是熊猫的专家,所以必须检查它为什么会像这样工作。