başka bir sütun pandaları veri çerçevesine dayalı olarak sütun değerini ayıklayın


109

Bir değişken koşullamanın değerini başka bir değişkene çıkarmak konusunda biraz takılıp kalıyorum. Örneğin, aşağıdaki veri çerçevesi:

A  B
p1 1
p1 2
p3 3
p2 4

Nasıl değerini alabilirsiniz ? Değerini her çıkardığımda, bir dizge değil, bir nesne aldım.AB=3A


Anlıyorum item(), sonuna eklemeliyim .
Anderson Zhu

df.queryve pd.evalbu kullanım durumu için uygun görünüyor. pd.eval()İşlevler ailesi, özellikleri ve kullanım durumları hakkında bilgi için lütfen pd.eval () kullanarak pandalarda Dinamik İfade Değerlendirmesini ziyaret edin .
cs95

Yanıtlar:


193

Durumunuzu lockarşılayan serileri almak ve ardından ilocilk öğeyi almak için kullanabilirsiniz:

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
Yardımınız için teşekkürler. df.loc[df['B'] == 3, 'A'].item()benim için de çalışıyor.
Anderson Zhu

3
Veri çerçevesi B sütununda birden fazla '3' girişi varsa hangisini seçer?
2018

1
df.loc [df ["Condition_Column"] == 0, ("Sütun_1", "Sütun_2," Sütun_3 "," Sütun_4 ")] benim için çalışıyor. Bu örnek birden çok sütun seçmek içindir. Bunlar tuple içinde olmalıdır.
Mustafa Uçar

df.loc [df ['B'] == 300, 'A']. iloc [0] çıktının ne olacağı anlamına gelirse?
user1999109

.item () görünüşe göre kullanımdan kaldırılmış ve kaldırılacak. Bunu yapmanın başka bir yolu var mı? Sorgulamak için .loc yöntemiyle de döndürülen sütun veya veri türünün adıyla ilgilenmiyorum.
Dan

41

Daha queryaz yazarak deneyebilirsiniz :

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

Sorgu ilginç çünkü ona daha karmaşık maddeler de ekleyebiliriz
Samir Baid

1
IMHO, bu en iyi cevap.
NLR

27

df[df['B']==3]['A'], df'nin pandalarınız olduğunu varsayarak.DataFrame.


Pandaların resmi belgelerinde bu yöntemin tam olarak açıklandığı bir bağlantı verebilir misiniz?
vasili111

][Kısmen demek istiyorum .
vasili111

11

df[df['B']==3]['A'].valuesParantez olmadan sadece öğenin kendisini istiyorsanız kullanın


Pandaların resmi belgelerinde bu yöntemin tam olarak açıklandığı bir bağlantı verebilir misiniz? ][Kısmen demek istiyorum .
vasili111


Değere [0]erişmek için yine de sonuna koymanız gerekiyor .
rubebop

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

Görevim için bu madde çıkarma ve çıkarma işlemleri üzerinde de çalıştım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.