python - delete a row from dataframe when the index (DateTime) is Sunday -


sample data

                              open     high      low    close datetime                                                      2016-01-03 00:00:00+00:00  1.08701  1.08723  1.08451  1.08515 2016-01-04 00:00:00+00:00  1.08701  1.09464  1.07811  1.08239 2016-01-05 00:00:00+00:00  1.08238  1.08388  1.07106  1.07502 2016-01-06 00:00:00+00:00  1.07504  1.07994  1.07185  1.07766 2016-01-07 00:00:00+00:00  1.07767  1.09401  1.07710  1.09256 2016-01-08 00:00:00+00:00  1.09255  1.09300  1.08030  1.09218 

datetime index, need delete row has datetime sunday or saturday (2016-01-03).

i reading data cvs file

df = pd.read_csv(filename, names=['datetime','open','high','low','close'],                  parse_dates = [0], index_col = 'datetime') 

tried below did not work.

df = df.drop(df[df.weekday() == 6].index) #delete sundays 

you use asfreq('b') reindex df rows business days. note, however, if business day missing df.index, asfreq return dataframe row of nans indicate missing row. note df.index must datetimeindex.

in [106]: df.asfreq('b') out[106]:                 open     high      low    close 2016-01-04  1.08701  1.09464  1.07811  1.08239 2016-01-05  1.08238  1.08388  1.07106  1.07502 2016-01-06  1.07504  1.07994  1.07185  1.07766 2016-01-07  1.07767  1.09401  1.07710  1.09256 2016-01-08  1.09255  1.09300  1.08030  1.09218 

here setup used produce result above:

import pandas pd df = pd.dataframe(     {'close': [1.0851500000000001, 1.08239, 1.0750200000000001, 1.0776600000000001, 1.09256, 1.0921799999999999], 'datetime': ['2016-01-03 00:00:00+00:00', '2016-01-04 00:00:00+00:00', '2016-01-05 00:00:00+00:00', '2016-01-06 00:00:00+00:00', '2016-01-07 00:00:00+00:00', '2016-01-08 00:00:00+00:00'], 'high': [1.0872299999999999, 1.0946400000000001, 1.08388, 1.0799399999999999, 1.0940099999999999, 1.093], 'low': [1.0845100000000001, 1.0781100000000001, 1.0710600000000001, 1.07185, 1.0770999999999999, 1.0803], 'open': [1.08701, 1.08701, 1.0823799999999999, 1.07504, 1.0776700000000001, 1.0925499999999999]}) df['datetime'] = pd.to_datetime(df['datetime']) df = df.set_index('datetime') print(df.asfreq('b')) 

Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -