2017-08-09 74 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