витягнути значення стовпця на основі іншого фрейму даних панди стовпців


109

Я ніби не зациклююся на витягуванні значення однієї змінної кондиціонування на іншу змінну. Наприклад, такий фрейм даних:

A  B
p1 1
p1 2
p3 3
p2 4

Як я можу отримати значення Aколи B=3? Кожного разу, коли я Aдіставав значення , я отримував об'єкт, а не рядок.


Бачу, мені слід додати item()наприкінці.
Андерсон Чжу

df.queryі, pd.evalздається, добре підходить для цього випадку використання. Для отримання інформації про pd.eval()сімейство функцій, їх особливості та випадки використання, будь ласка, відвідайте Динамічну оцінку вираження в пандах за допомогою pd.eval () .
cs95

Відповіді:


193

Ви можете використовувати 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'

24
Спасибі за вашу допомогу. df.loc[df['B'] == 3, 'A'].item()працює і для мене.
Андерсон Чжу

3
який з них вибирати, якщо в кадрі даних є кілька записів "3" у колонці B?
subhash

1
df.loc [df ["Condition_Column"] == 0, ("Колона_1", "Колона_2," Колона_3 "," Колона_4 ")] працює для мене. Цей приклад для вибору декількох стовпців. Вони повинні бути в кортежі.
Мустафа Учар

якщо df.loc [df ['B'] == 300, 'A']. iloc [0] означає, що буде результатом?
user1999109

.item (), мабуть, застарів і буде видалено. Чи є інший спосіб зробити це? Мене не цікавить назва стовпця або тип даних, який також повертається методом .loc для запиту.
Ден

40

Ви можете спробувати query, що набирає менше:

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

Запит цікавий тим, що до нього також можна додати складніші пропозиції
Самір Байд

1
ІМХО, це найкраща відповідь.
NLR

27

df[df['B']==3]['A'], припустимо, що df - це ваші панди.DataFrame.


Чи можете ви надати посилання, де саме цей метод описаний в офіційній документації панд?
vasili111

Я маю на увазі ][частину.
vasili111

11

Використовуйте, df[df['B']==3]['A'].valuesякщо ви просто хочете сам предмет без дужок


Чи можете ви надати посилання, де саме цей метод описаний в офіційній документації панд? Я маю на увазі ][частину.
vasili111

Це повертає результат з []
Сид,

Вам потрібно все-таки поставити [0]в кінці, щоб отримати доступ до значення.
rubebop

0
male_avgtip=(tips_data.loc[tips_data['sex'] == 'Male', 'tip']).mean()

Я також працював над цими операціями клаузування та вилучення мого завдання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.