Pandalarda, diğer iki sütunda bir boole işlemi olan hesaplanmış bir sütun oluşturmak istiyorum.Bir veri çerçevesinin iki sütununda mantıksal işlem
Pandalarda iki sayısal sütunu birlikte eklemek kolaydır. Mantıksal operatör AND
ile benzer bir şey yapmak istiyorum.
In [1]: d = pandas.DataFrame([{'foo':True, 'bar':True}, {'foo':True, 'bar':False}, {'foo':False, 'bar':False}])
In [2]: d
Out[2]:
bar foo
0 True True
1 False True
2 False False
In [3]: d.bar and d.foo ## can't
...
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Yani mantıksal operatörler pandalar sayısal operatörler olarak oldukça aynı şekilde çalışır yok sanırım: İşte benim ilk deneme. Ben hata mesajı da anlaşılacağı yapıyor ve bool()
kullanarak çalıştı:
In [258]: d.bar.bool() and d.foo.bool() ## spoiler: this doesn't work either
...
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Ben int
boole sütunları döküm bunları birbirine ekleyerek bir mantıksal olarak değerlendirerek çalışan bir yolunu buldu.
In [4]: (d.bar.apply(int) + d.foo.apply(int)) > 0 ## Logical OR
Out[4]:
0 True
1 True
2 False
dtype: bool
In [5]: (d.bar.apply(int) + d.foo.apply(int)) > 1 ## Logical AND
Out[5]:
0 True
1 False
2 False
dtype: bool
Bu kıvrımlıdır. Daha iyi bir yolu var mı?
Teşekkür ederiz! Bu pandalar dokümanlar herhangi bir yerde belirtilen mi? – dinosaur
@dinosaur Evet, [boole indeksleme bölümünde] & 've' | 'kullanma örnekleri var (http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing) –