Reputation: 344
I have a pandas dataframe (df) like below.
value date count1 hours column_name
0 eps 2021-02-17 127185 0 EPS
1 eps 2021-02-17 129792 1 EPS
2 eps 2021-02-17 155645 2 EPS
3 eps 2021-02-17 160214 4 EPS
4 eps 2021-02-17 164315 5 EPS
5 eps 2021-02-16 164987 1 EPS
And I want new dataframe which does not contain record of date 2021-02-17 and hours=1. For these i try these
df.loc[(df['date1']<='2021-02-17') & (df['hours']!= 1)]
It give output like below :-
value date count1 hours column_name
0 eps 2021-02-17 127185 0 EPS
1 eps 2021-02-17 155645 2 EPS
2 eps 2021-02-17 160214 4 EPS
3 eps 2021-02-17 164315 5 EPS
But I want like below :-
value date count1 hours column_name
0 eps 2021-02-17 127185 0 EPS
1 eps 2021-02-17 155645 2 EPS
2 eps 2021-02-17 160214 4 EPS
3 eps 2021-02-17 164315 5 EPS
4 eps 2021-02-16 164987 1 EPS
Upvotes: 0
Views: 42
Reputation: 13831
You need to use the operator |
instead of &
:
import pandas as pd
#if needed you can change your 'date' to datetime
df['date'] = pd.to_datetime(df['date'])
out = df.loc[(df['date']!='2021-02-17') | (df['hours']!=1)]
value date count1 hours column_name
0 eps 2021-02-17 127185 0 EPS
1 eps 2021-02-17 129792 1 EPS
2 eps 2021-02-17 155645 2 EPS
3 eps 2021-02-17 160214 4 EPS
4 eps 2021-02-17 164315 5 EPS
5 eps 2021-02-16 164987 1 EPS
Upvotes: 2
Reputation: 863331
Compare both for not equal by !=
, change |
for bitwise OR
and for correct ouput need datetimes:
df['date'] = pd.to_datetime(df['date'])
df = df.loc[(df['date'] != '2021-02-17') | (df['hours'] != 1)]
print (df)
value date count1 hours column_name
0 eps 2021-02-17 127185 0 EPS
2 eps 2021-02-17 155645 2 EPS
3 eps 2021-02-17 160214 4 EPS
4 eps 2021-02-17 164315 5 EPS
5 eps 2021-02-16 164987 1 EPS
Upvotes: 2