-1
這看起來很簡單,但我似乎無法弄清楚。我知道如何過濾熊貓數據框到符合條件的所有行,但是當我想要相反的時候,我總是收到奇怪的錯誤。在不符合條件的所有行上過濾熊貓數據框
這裏是例子。 (背景:一個簡單的棋盤遊戲,其中作品是在網格上,我們正在試圖給它一個座標,並返回所有相鄰塊,但不是實際的實際工件座標)
import pandas as pd
import numpy as np
df = pd.DataFrame([[5,7, 'wolf'],
[5,6,'cow'],
[8, 2, 'rabbit'],
[5, 3, 'rabbit'],
[3, 2, 'cow'],
[7, 5, 'rabbit']],
columns = ['lat', 'long', 'type'])
coords = [5,7] #the coordinate I'm testing, a wolf
view = df[((coords[0] - 1) <= df['lat']) & (df['lat'] <= (coords[0] + 1)) \
& ((coords[1] - 1) <= df['long']) & (df['long'] <= (coords[1] + 1))]
view = view[not ((coords[0] == view['lat']) & (coords[1] == view['long'])) ]
print(view)
我以爲not
應該否定隨後括號內的布爾值,但這似乎不是它的工作原理。
我希望它能夠在5,6的時候返回牛,但不是5,7的狼(因爲這是當前的作品)。只是爲了仔細檢查我的邏輯,我做了
me = view[(coords[0] == view['lat']) & (coords[1] == view['long'])]
print(me)
並且這只是回報狼,正如我所料。那麼,爲什麼我不能只把not
放在那個前面,並得到其他一切呢?或者,更重要的是,我該如何去做其他事情。
是的!謝謝。我也嘗試過使用'!',因爲我認爲這樣的事情可能會發生,但我還是有點偏離。再次感謝。 – seth127