【问题标题】:Looking up Pandas dataFrame查找 Pandas 数据框
【发布时间】:2017-01-31 10:48:11
【问题描述】:

我通过读取文本文件创建了一个数据框。我有兴趣知道特定列中是否存在少量值,如果存在,我想打印整行。

这是我的输入文件(analyte_map.txt):

Analyte_id    mass    Intensity   
A34579        101.2    786788
B12345        99.2     878787
B943470       103.89   986443
C12345        11.2      101

这是我的代码:

import pandas as pd
map_file="analyte_map.txt"
array=['A34579','B943470','D583730']
analyte_df=pd.read_table(map_file,sep="\t")
for value in array:
    if analyte_df.lookup([value],['Analyte_id']):
        print '%s\t%s'%(analyte_df['mass'],analyte_df['Intensity'])

【问题讨论】:

    标签: python pandas indexing dataframe conditional-statements


    【解决方案1】:

    您可以将boolean indexingisin 一起使用:

    array=['A34579','B943470','D583730']
    print (df[df.analyte_id.isin(array)])
      analyte_id    mass  Intensity
    0     A34579  101.20     786788
    2    B943470  103.89     986443
    

    如果只需要某些列,请使用ix:

    array=['A34579','B943470','D583730']
    print (df.ix[df.analyte_id.isin(array), ['mass','Intensity']])
         mass  Intensity
    0  101.20     786788
    2  103.89     986443
    

    【讨论】:

    • 感谢您的帮助。有没有办法在数据框中一次查找一个值而不是整个列表?
    • 很高兴能帮到您!你觉得(df[df.analyte_id == 'A34579']) 吗?
    • 是的,我正在尝试 if df[df.analyte_id == 'A34579']: print df.Intensity
    • 你需要分配它像df1 = df[df.analyte_id == 'A34579']然后print df1.Intensity
    • 或者更好df1 = df.ix[df.analyte_id == 'A34579', 'Intensity']
    【解决方案2】:

    使用.query()方法:

    In [9]: look_up=['A34579','B943470','D583730']
    
    In [10]: df.query('Analyte_id in @look_up')
    Out[10]:
      Analyte_id    mass  Intensity
    0     A34579  101.20     786788
    2    B943470  103.89     986443
    
    In [11]: df.query('Analyte_id in @look_up')[['mass','Intensity']]
    Out[11]:
         mass  Intensity
    0  101.20     786788
    2  103.89     986443
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-20
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多