分享
三行代码  ›  专栏  ›  技术社区  ›  jaried

如何根据数据帧中某列的值获取另一列中某个值的标量?

  •  1
  • jaried  · 技术社区  · 1 周前

    我有一个有两列的数据帧 A B . 我想取列的标量 B类 基于列的值 A loc .value [0]

    我的数据量比较小,主要问题是看代码的语法是否正确。 .价值

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame()
    df[['A', 'B']] = pd.DataFrame(np.arange(10).reshape((5, 2)))
    df1 = df.loc[df['A'] == 4, 'B'].values[0]
    print(df1)
    

    结果是

    5
    

    这个代码可以优化吗?

    df1 = df.loc[df['A'] == 4, 'B'].values[0]
    
    1 回复  |  直到 1 周前
        1
  •  1
  •   jezrael    1 周前

    如果需要优化,如果条件失败,则返回一些值 next 具有 iter :

    a = next(iter(df.loc[df['A'] == 4, 'B']), 'no match')
    print (a)
    5
    
    a = next(iter(df.loc[df['A'] == 1000, 'B']), 'no match')
    print (a)
    no match
    

    如果值始终匹配,则可以使用 Series.to_numpy

    df.loc[df['A'] == 4, 'B'].to_numpy()[0]
    #but this failed
    #df.loc[df['A'] == 1000, 'B'].to_numpy()[0]