8

我正在尝试将“FreeSec”列的值设置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

我在这里想念什么?

4

2 回答 2

15

您应该使用 loc 来执行此操作而不使用 chaining,这将保证分配有效:

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

loc 中的分配被覆盖,因此它实际上是视图还是副本的实现细节并不重要,如果你链接它确实很重要,所以避免/非常小心。

于 2013-10-21T15:04:23.113 回答
2

It works other way around:

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

I'm not an expert in Pandas, so have to check why is it working like this.

于 2013-10-21T14:28:10.410 回答