2016-04-18 5 views
24

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

A B p1 1 p1 2 p3 3 p2 4

Как я могу получить значение A когда B=3? Каждый раз, когда я извлекал значение A, я получал объект, а не строку.

+0

Я вижу, я должен добавить 'item()' в конце. –

ответ

34

Вы можете использовать loc, чтобы получить ряд, удовлетворяющую ваше состояние, а затем iloc получить первый элемент:

In [2]: df 
Out[2]: 
    A B 
0 p1 1 
1 p1 2 
2 p3 3 
3 p2 4 

In [3]: df.loc[df['B'] == 3, 'A'] 
Out[3]: 
2 p3 
Name: A, dtype: object 

In [4]: df.loc[df['B'] == 3, 'A'].iloc[0] 
Out[4]: 'p3' 
+3

Спасибо за помощь. 'df.loc [df ['B'] == 3, 'A']. item()' работает для меня тоже. –

+0

df.loc [df ['B'] == 3, 'A'] [0] тоже работает – Myk

3

df[df['B']==3]['A'], предполагая, что df является вашим pandas.DataFrame.

4

Вы можете попробовать query, что меньше, набрав:

df.query('B==3')['A']