首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python -根据一系列值或条件拾取数据

Python -根据一系列值或条件拾取数据
EN

Stack Overflow用户
提问于 2017-06-13 10:46:32
回答 0查看 5.6K关注 0票数 0

我有一个有9列的数据集,并且我设法使用pandas提取了其中的两列(感谢Stack成员之前的帮助!)。现在,我的问题是:我有一个值列表,将用于从数据集中拾取并提取相应的值。提取的数据集如下所示:

代码语言:javascript
运行
复制
Exp. m/z    Intensity
1000        2000
2000        3000
3000        4000
4000        5000

以此类推(每个数据集大约有500+行)。用于代答的列表如下:

代码语言:javascript
运行
复制
mass
1200
1300

以此类推(代答列表大约有200行)。每个质量值将用于计算上下箱,它们将用于拾取Exp。数据集中的m/z值。因此,例如,质量1200将被计算为1250 (上)和1150 (下),数据集中落在这个范围内的任何东西都将被拾取,它们对应的强度值就是我想要的。如果没有拾取,我希望结果尽可能为空值,因为我相信0值会影响平均值和其他统计分析。

下面是我的代码,其中file是数据集,pickupfile是拾取列表:

从pandas导入DataFrame

代码语言:javascript
运行
复制
    import pandas as pd
    import numpy as np

    file = 'C09.xls'
    pickupfile = 'pickuplist.xlsx'

    xl = pd.ExcelFile(file)
    pl = pd.ExcelFile(pickupfile)

    plist = pd.read_excel(xl)
    pickuplist = pd.read_excel(pl)

    cmass = plist['Exp. m/z']
    height = plist['Intensity']


    plistcollect = pd.concat([cmass, height], axis=1)


    ppm = 150

    peak1upper = round(pickuplist*(1+ppm/1000000),4)

    peak1lower = round(pickuplist*(1-ppm/1000000),4)

    pickup = plistcollect[((plistcollect['Exp. m/z']>peak1lower) & (plistcollect['Exp. m/z'] < peak1upper))]
    print(pickup['Intensity'])

当我执行这段代码时,我得到一条错误消息: ValueError: Boolean array期望用于该条件,而不是float64。我知道我的数据集是浮点值,所以你们有什么建议或建议吗?

非常感谢!

编辑:忘记提到我的数据和两个限制(peak1lower和peak1upper)是float64类型。

我也尝试了isin的拾音器,比如:

代码语言:javascript
运行
复制
    pickup = plistcollect[plistcollect.isin(np.arange(peak1lower,peak1upper))]
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44511573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档