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

kan*_*aba 8 python pandas

我正在尝试将"FreeSec"列的值设置True为我的pandas数据帧的已过滤行.这是代码:

data[data["Brand"].isin(group_clients)].FreeSec = True
Run Code Online (Sandbox Code Playgroud)

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

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

12     False
163    False
164    False
165    False
166    False
167    False
168    False
169    False
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

And*_*den 15

您应该使用loc来执行此操作而不进行链接,这将使该分配工作:

data.loc[data["Brand"].isin(group_clients), "FreeSec"] = True
Run Code Online (Sandbox Code Playgroud)

重写loc中的赋值,以便它实际上是一个视图或一个副本的实现细节无关紧要,如果链接这样做很重要,所以避免/非常小心.