我是Python新手。我肯定我问的是一个无关紧要的问题,但在做了一点googlefoo之后,不幸的是我还没有找到解决办法。所以就这样: 如果我有这样的数据帧:
raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'],
'age': [42, 52, 36, 24, 73],
'preTestScore': [-999, -999, -999, 2, 1],
'postTestScore': [2, 2, -999, 2, -999]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestScore'])
如何执行以下操作: 如果preTestScore=-999,那么用NaN替换preTestScore和postestscore?你知道吗
我可以使用测向替换(-999, np.nan公司)但这需要跨两列有条件地删除。你知道吗
谢谢你的好意
^{}
直列
说明
我使用
cols
来避免写长列名。cols[0]
是写'preTestScore'
当
preTestScore
为-999
时,df[cols].mask(df[cols[0]].eq(-999))
将使两列np.nan
。我使用
assign
生成包含新列的数据帧,而不覆盖旧的数据帧。如果要持久化此新数据帧,请将结果指定给一个名称。您甚至可以使用旧名称df = df.assign(**df[cols].mask(df[cols[0]].eq(-999)))
assign
获取关键字参数,您可以通过使用双splat**kwargs
解包字典来传递这些参数。方便的是,当在字典上下文中使用数据帧时,它以列名作为关键字,以列作为值进行解包,这完全符合我们的需要。就地
将^{} 与boolen mask一起使用,并将列列表设置为
NaN
:细节:
相关问题 更多 >
编程相关推荐