python – pandas数据帧中的条件列算法
发布时间:2020-12-16 23:33:47 所属栏目:Python 来源:网络整理
导读:我有一个pandas数据帧,具有以下结构: import numpy as npimport pandas as pdmyData = pd.DataFrame({'x': [1.2,2.4,5.3,2.3,4.1],'y': [6.7,7.5,8.1,8.3],'condition':[1,1,np.nan,1],'calculation': [np.nan]*5})print myData calculation condition x y0
我有一个pandas数据帧,具有以下结构:
import numpy as np import pandas as pd myData = pd.DataFrame({'x': [1.2,2.4,5.3,2.3,4.1],'y': [6.7,7.5,8.1,8.3],'condition':[1,1,np.nan,1],'calculation': [np.nan]*5}) print myData calculation condition x y 0 NaN 1 1.2 6.7 1 NaN 1 2.4 7.5 2 NaN NaN 5.3 8.1 3 NaN NaN 2.3 5.3 4 NaN 1 4.1 8.3 我想根据’x’和’y'(例如x / y)中的值在’calculation’列中输入一个值,但仅限于’condition’列包含NaN的那些单元格中(np.isnan(myData [ ‘condition’]).最终的数据框应如下所示: calculation condition x y 0 NaN 1 1.2 6.7 1 NaN 1 2.4 7.5 2 0.654 NaN 5.3 8.1 3 0.434 NaN 2.3 5.3 4 NaN 1 4.1 8.3 我很高兴使用’for’循环依次单步执行每一行,然后使用’if’语句进行计算,但我拥有的实际数据帧非常大,我想在数组中进行计算 – 基于方式.这可能吗?我想我可以计算所有行的值,然后删除我不想要的那些但是这似乎浪费了很多精力(NaN在数据帧中非常少见),并且在某些情况下’condition’等于1,由于除零,无法进行计算. 提前致谢. 解决方法
使用where并将条件传递给它,这将只在行符合条件的情况下执行计算:
In [117]: myData['calculation'] = (myData['x']/myData['y']).where(myData['condition'].isnull()) myData Out[117]: calculation condition x y 0 NaN 1 1.2 6.7 1 NaN 1 2.4 7.5 2 0.654321 NaN 5.3 8.1 3 0.433962 NaN 2.3 5.3 4 NaN 1 4.1 8.3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |