Получить одно значение из кадра данных Pandas с выбором на основе нескольких столбцов - PullRequest
0 голосов
/ 13 октября 2018

У меня есть фрейм данных pandas, который индексируется отдельно, и я хотел бы выбрать ячейку на основе значений двух столбцов в строке.Вот простой пример:

>>> import pandas as pd
>>> data_dict = {'A':[11,11], 'B':[22,33], 'C':[44,55]}
>>> df = pd.DataFrame.from_dict(data_dict)
>>> df
    A   B   C
0  11  22  44
1  11  33  55

Учитывая значение для A и B, я хочу получить значение для C. Например, если я знаю A==11 и B==22, я хочу получить 44.Мой вопрос:

Каков наилучший способ сделать это, сохранив индекс кадра данных как есть?

Я знаю, что могу сделать это через переменные атрибуты, но яЯ не уверен, что это самый простой.Это выглядит так беспорядочно:

>>> df[(df['A']==11) & (df['B']==22)]['C'].item()
44

Я также знаю чистый способ временного создания мультииндекса, как показано ниже, но я чувствую, что упускаю что-то простое в данных, если не могу получить 44из отдельно индексируемого фрейма данных без такого сложного запроса.

>>> df2 = df.set_index(['A','B'])
>>> df2
        C
A  B
11 22  44
   33  55
>>> df2.loc[11,22].item()
44

Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Спасибо, @ALollz!Этот выбор также намного более читабелен!

>>> df.loc[df.A.eq(11) & df.B.eq(22), 'C'].item()
44

Я рад, что задал этот вопрос!

0 голосов
/ 13 октября 2018

Спасибо @ pazitos10.Я думаю, что запрос сделал это намного более читабельным:

>>> df.query('A==11 & B==22')['C'].item()
44
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...