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
Post a Comment