您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – pandas数据帧中的条件列算法

5b51 2022/1/14 8:23:10 python 字数 1821 阅读 564 来源 www.jb51.cc/python

我有一个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,5.3,8.3], 'condition':[1,1,np.nan,np.nan,1],'calculation': [np.nan]*5}

概述

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,由于除零,无法进行计算.

提前致谢.

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

总结

以上是编程之家为你收集整理的python – pandas数据帧中的条件列算法全部内容,希望文章能够帮你解决python – pandas数据帧中的条件列算法所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶