2017-08-09 56 views
0

我有一個下面的日期框架。蟒蛇loc中的條件錯誤

mydf = pd.DataFrame({'month':[2,3,7,8],'day':[29,24,20,29]}) 
>>> mydf 
    day month 
0 29  2 
1 24  3 
2 20  7 
3 29  8 

>>> leapdf = mydf.loc[(mydf['month'] == 2) & (mydf['day'] == 29) ] 
>>> leapdf 
    day month 
0 29  2 

>>> otherdf = mydf.loc[(mydf['month'] != 2) & (mydf['day'] != 29) ] 
>>> otherdf 
    day month 
1 24  3 
2 20  7 

高於otherdf我期待包括第29天和第8個月。但不包括在內。任何人都可以指導我什麼是錯誤。

感謝

+0

爲什麼你會想到29天被列入當你明確拒絕呢? '(mydf ['day']!= 29)'。您的過濾器將刪除2月的所有月份以及等於第29天的所有日期(不分月份)。 – Alexander

+0

感謝您的錯誤 – venkysmarty

回答

1

您需要爲or|

otherdf = mydf.loc[(mydf['month'] != 2) | (mydf['day'] != 29) ] 

什麼是相同的:

otherdf = mydf.loc[~((mydf['month'] == 2) & (mydf['day'] == 29)) ] 
print (otherdf) 
    day month 
1 24  3 
2 20  7 
3 29  8