【发布时间】:2015-01-28 10:56:58
【问题描述】:
我有一个具有以下结构的熊猫数据框:
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,5.3,8.3], 'condition':[1,1,np.nan,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)在“计算”列中输入一个值,但仅限于“条件”列包含 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 在数据框中非常少见),并且在某些情况下,“条件”等于 1 , 因被零除而无法计算。
提前致谢。
【问题讨论】:
标签: python numpy pandas dataframe