是否有一个函数可以在与其他列中的其他值相关联的列中获取特定值?

时间:2019-03-29 14:40:45

标签: python dataframe

我刚刚开始使用pandas数据框,我想知道是否有办法通过了解不同列的值来获取列中的值?

让我们假设一个数据帧(df),其中包含以下各列。如果我有一个来自'u'和'v'的值,例如u = 123v = 962

有没有办法在B列中获取与那些值相对应的值?

df = pd.DataFrame({'A':[30, 2, 12, 4, 32, 33, 69],
                   'B':['valx', 'valy', 'valz', 'val45', 'val78', 'val516', 'val123'],
                   'C':['Steak', 'Lamb', 'Mango', 'Apple', 'Cheese', 'Melon', 'Beans'],
                   'D':[165, 70, 120, 80, 180, 172, 150],
                   'u':[147,258,369,123,893,123,879],
                   'v':[123,456,789,741,852,963,369]
                   },
                  index=['123', '456', '483', '861', '789', '963', '753'])
       A       B        C       D        u   v

123    30     valx     165     Steak    147 123
456    2      valy     70      Lamb     258 456
483    12     valz     120     Mango    369 789
861    4      val45    80      Apple    123 741
789    32     val78    180     Cheese   893 852
963    33     val516   172     Melon    123 963
753    69     val12    150     Beans    879 369

当前要解决此问题,我执行以下代码,我认为最好的方式是...:-/

extrait = df[(df['u'] == 123 ) & (df['v'] == 962)]
Val_in_B = extrait['B'][0]
Val_in_B
>>>  val516

1 个答案:

答案 0 :(得分:0)

或多或少。实际上,当您选择带有条件的行时,可能会有0、1或许多值。这就是为什么选择单个列会为您提供一系列的原因。

但是您可以通过这种方式进行一次提取:

df.loc[(df.u==123)&(df.v==963), 'B']

只有在确定搜索将返回一个值的情况下,才选择第一个元素。