Reputation: 1061
I create a list of dates like so:
begin=dt.date(2010,1,1)
back=pd.date_range(end = begin, periods = 11).to_pydatetime().tolist()
forward=pd.date_range(start = begin, periods = 11).to_pydatetime().tolist()
I then append this list of dates to a new variable:
date_centered=[]
date_centered.append(back)
date_centered.append(forward)
date_centered
Output:
[[datetime.datetime(2009, 12, 22, 0, 0),
datetime.datetime(2009, 12, 23, 0, 0),
datetime.datetime(2009, 12, 24, 0, 0),
datetime.datetime(2009, 12, 25, 0, 0),
datetime.datetime(2009, 12, 26, 0, 0),
datetime.datetime(2009, 12, 27, 0, 0),
datetime.datetime(2009, 12, 28, 0, 0),
datetime.datetime(2009, 12, 29, 0, 0),
datetime.datetime(2009, 12, 30, 0, 0),
datetime.datetime(2009, 12, 31, 0, 0),
datetime.datetime(2010, 1, 1, 0, 0)],
[datetime.datetime(2010, 1, 1, 0, 0),
datetime.datetime(2010, 1, 2, 0, 0),
datetime.datetime(2010, 1, 3, 0, 0),
datetime.datetime(2010, 1, 4, 0, 0),
datetime.datetime(2010, 1, 5, 0, 0),
datetime.datetime(2010, 1, 6, 0, 0),
datetime.datetime(2010, 1, 7, 0, 0),
datetime.datetime(2010, 1, 8, 0, 0),
datetime.datetime(2010, 1, 9, 0, 0),
datetime.datetime(2010, 1, 10, 0, 0),
datetime.datetime(2010, 1, 11, 0, 0)]]
I want to remove the duplicate date, in this case 2010,1,1. How would I do this?
Upvotes: 1
Views: 1812
Reputation: 5443
You can use Python set
s to get rid of the duplicate item :
set_back = set(back)
set_forward = set(forward)
# updates `set_back` by removing elements from `set_forward`
set_back.difference_update(set_forward)
# convert `set_back` and `set_forward` back to lists
# and add them to your `date_centered` result
date_centered = [list(set_back), list(set_forward)]
However, given your first lines of code, maybe you just want to get rid of the extra date by removing it from the back
list :
begin = dt.date(2010,1,1)
back = pd.date_range(end = begin, periods = 11).to_pydatetime().tolist()
forward = pd.date_range(start = begin, periods = 11).to_pydatetime().tolist()
back.pop() # removes the last item
date_centered= [back, forward]
Upvotes: 2
Reputation: 1202
You can take the set of both lists (this will get rid of duplicates within every list) and subtract the common elements of both sets (A and B) from all possible values (A or B). This will return only the unique elements.
list((set(back) | set(forward)) - (set(back) & set(forward)))
Upvotes: 1