Есть ли функция для получения определенного значения в столбце, связанного с другими значениями в других столбцах? - PullRequest
0 голосов
/ 29 марта 2019

Я только начал использовать кадры данных pandas, и я хотел узнать, есть ли способ получить значение в столбце, зная значения разных столбцов?

Давайте предположим, что кадр данных (df), сследующие столбцы.В случае, если у меня есть одно значение из примера 'u' и 'v' u = 123 и v = 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 голосов
/ 29 марта 2019

Больше или меньше.Фактически, когда вы выбираете строку с условием, у вас может быть 0, 1 или много значений.По этой причине выбор одного столбца даст вам серию.

Но вы можете сделать одно извлечение таким образом:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...