DataFrame想把符合条件的值置0,怎么操作?

景韦 2019-02-20 09:15:08

import pandas as pd
data=pd.read_json('{"A": {"a": 1, "b": 4, "c": 7}, "B": {"a": 2, "b": 5, "c": 8}, "C": {"a": 3, "b": 6, "c": 9}}')

data
A B C
a 1 2 3
b 4 5 6
c 7 8 9

data[(data['B']>=5) & (data['B']<=8)]['B']
b 5
c 8
Name: B, dtype: int64

如上,我想把B列里>=5且<=8的值赋0,应该怎么操作?
我现在只能把这两个值选取出来,但不知道怎么赋值
...全文
3035 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
亦点先生 2019-10-25
  • 打赏
  • 举报
回复
data["B"] = data.B.apply(lambda x: 0 if (data['B']>=5) and (data['B']<=8) else 1)
避免下标问题
  • 打赏
  • 举报
回复
data['B'][(data['B'] >= 5) & (data['B'] <= 8)] = 0
景韦 2019-02-20
  • 打赏
  • 举报
回复 3
突然想到个方法实现了,但不知道有没有其他更好的方法呢?

data.loc[data[(data['B']>=5)&(data['B']<=8)].index,['B']]=0

data
	A	B	C
a	1	2	3
b	4	0	6
c	7	0	9
NaForgietan 2021-08-24
  • 举报
回复
@景韦 找了半天就你这个方法比较好了,谢谢~
NaForgietan 2021-08-24
  • 举报
回复
@NaForgietan 其他方法可能是我没弄懂然后某些地方报错了

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧