{"action":"created","comment":{"url":"https://api.github.com/repos/pydata/pandas/pulls/comments/36707231","id":36707231,"diff_hunk":"@@ -439,6 +461,18 @@ def f(x):\n         self.lvalues = lvalues\n         self.rvalues = rvalues\n \n+\n+    def _is_offset(self, arr_or_obj):\n+        \"\"\" check if obj or first element of list-like is DateOffset \"\"\"\n+        if isinstance(arr_or_obj, pd.DateOffset):\n+            return True\n+        elif isinstance(arr_or_obj, pd.Series):\n+            return isinstance(arr_or_obj.values[0], pd.DateOffset)\n+        elif is_list_like(arr_or_obj):","path":"pandas/core/ops.py","position":null,"original_position":124,"commit_id":"9838c443f3e065e44cf215a17fc32e5608540332","original_commit_id":"fa281cac00ee727d07c984b12d9efc532b66edfe","user":{"login":"chris-b1","id":1924092,"avatar_url":"https://avatars.githubusercontent.com/u/1924092?v=3","gravatar_id":"","url":"https://api.github.com/users/chris-b1","html_url":"https://github.com/chris-b1","followers_url":"https://api.github.com/users/chris-b1/followers","following_url":"https://api.github.com/users/chris-b1/following{/other_user}","gists_url":"https://api.github.com/users/chris-b1/gists{/gist_id}","starred_url":"https://api.github.com/users/chris-b1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chris-b1/subscriptions","organizations_url":"https://api.github.com/users/chris-b1/orgs","repos_url":"https://api.github.com/users/chris-b1/repos","events_url":"https://api.github.com/users/chris-b1/events{/privacy}","received_events_url":"https://api.github.com/users/chris-b1/received_events","type":"User","site_admin":false},"body":"Changed this, added a test for `Series`.  Adding an array of offsets to a `DatetimeIndex` still fails, which I think is consistent with other `Index` behavior.","created_at":"2015-08-11T02:40:51Z","updated_at":"2015-08-11T02:40:51Z","html_url":"https://github.com/pydata/pandas/pull/10744#discussion_r36707231","pull_request_url":"https://api.github.com/repos/pydata/pandas/pulls/10744","_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments/36707231"},"html":{"href":"https://github.com/pydata/pandas/pull/10744#discussion_r36707231"},"pull_request":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10744"}}},"pull_request":{"url":"https://api.github.com/repos/pydata/pandas/pulls/10744","id":41533619,"html_url":"https://github.com/pydata/pandas/pull/10744","diff_url":"https://github.com/pydata/pandas/pull/10744.diff","patch_url":"https://github.com/pydata/pandas/pull/10744.patch","issue_url":"https://api.github.com/repos/pydata/pandas/issues/10744","number":10744,"state":"open","locked":false,"title":"Allow DateOffset addition with Series","user":{"login":"chris-b1","id":1924092,"avatar_url":"https://avatars.githubusercontent.com/u/1924092?v=3","gravatar_id":"","url":"https://api.github.com/users/chris-b1","html_url":"https://github.com/chris-b1","followers_url":"https://api.github.com/users/chris-b1/followers","following_url":"https://api.github.com/users/chris-b1/following{/other_user}","gists_url":"https://api.github.com/users/chris-b1/gists{/gist_id}","starred_url":"https://api.github.com/users/chris-b1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chris-b1/subscriptions","organizations_url":"https://api.github.com/users/chris-b1/orgs","repos_url":"https://api.github.com/users/chris-b1/repos","events_url":"https://api.github.com/users/chris-b1/events{/privacy}","received_events_url":"https://api.github.com/users/chris-b1/received_events","type":"User","site_admin":false},"body":"Addresses #10699 - allowing relative offsets like `DateOffset(years=1)` to to be added to a `Series` containing datetimes for element-wise addition.\r\n\r\nPreviously only non-relative offsets that could be mapped to a time_delta (`Tick`, `Day`, etc) worked.\r\n\r\nSome performance numbers are below - `Tick` based offsets should be unchanged, a subset of offsets (`DateOffset`, `YearEnd/Begin`, `MonthEnd/Begin`, `QuarterEnd/Begin`, `Week`, `BusinessDay`) will be sped up significantly; and other offsets will still fallback to a slow path, but now will raise a performance warning.\r\n\r\n\r\n### Master\r\n\r\n    In [1]: idx = pd.date_range(start='20140101', freq='T', periods=100000)\r\n\r\n    In [2]: %timeit idx + pd.offsets.Day()\r\n    100 loops, best of 3: 5.72 ms per loop\r\n\r\n    In [3]: %timeit idx + pd.Timedelta(1, 'D')\r\n    100 loops, best of 3: 5.67 ms per loop\r\n\r\n    In [4]: %timeit idx + pd.offsets.DateOffset(years=1, months=2, days=1)\r\n    1 loops, best of 3: 1.79 s per loop\r\n\r\n    In [5]: %timeit idx + pd.offsets.WeekOfMonth(week=2, weekday=4)\r\n    1 loops, best of 3: 22.8 s per loop\r\n\r\n### PR\r\n\r\n    In [3]: %timeit idx + pd.offsets.Day()\r\n    100 loops, best of 3: 5.8 ms per loop\r\n\r\n    In [4]: %timeit idx + pd.Timedelta(1, 'D')\r\n    100 loops, best of 3: 5.73 ms per loop\r\n\r\n    In [5]: %timeit idx + pd.offsets.DateOffset(years=1, months=2, days=1)\r\n    10 loops, best of 3: 86.9 ms per loop\r\n\r\n    In [6]: %timeit idx + pd.offsets.WeekOfMonth(week=2, weekday=4)\r\n    1 loops, best of 3: 23.4 s per loop\r\n    c:\\users\\chris\\documents\\python-dev\\pandas\\pandas\\tseries\\index.py:695: PerformanceWarning:     Non-vectorized DateOffset being applied to Series or DatetimeIndex  PerformanceWarning)\r\n","created_at":"2015-08-04T04:31:26Z","updated_at":"2015-08-11T02:40:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5308bde86f05f7453bc282bb52f85d51082674b4","assignee":null,"milestone":{"url":"https://api.github.com/repos/pydata/pandas/milestones/34","html_url":"https://github.com/pydata/pandas/milestones/0.17.0","labels_url":"https://api.github.com/repos/pydata/pandas/milestones/34/labels","id":1033710,"number":34,"title":"0.17.0","description":"","creator":{"login":"jreback","id":953992,"avatar_url":"https://avatars.githubusercontent.com/u/953992?v=3","gravatar_id":"","url":"https://api.github.com/users/jreback","html_url":"https://github.com/jreback","followers_url":"https://api.github.com/users/jreback/followers","following_url":"https://api.github.com/users/jreback/following{/other_user}","gists_url":"https://api.github.com/users/jreback/gists{/gist_id}","starred_url":"https://api.github.com/users/jreback/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jreback/subscriptions","organizations_url":"https://api.github.com/users/jreback/orgs","repos_url":"https://api.github.com/users/jreback/repos","events_url":"https://api.github.com/users/jreback/events{/privacy}","received_events_url":"https://api.github.com/users/jreback/received_events","type":"User","site_admin":false},"open_issues":176,"closed_issues":237,"state":"open","created_at":"2015-03-23T10:47:38Z","updated_at":"2015-08-10T23:45:44Z","due_on":"2015-08-31T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/pydata/pandas/pulls/10744/commits","review_comments_url":"https://api.github.com/repos/pydata/pandas/pulls/10744/comments","review_comment_url":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pydata/pandas/issues/10744/comments","statuses_url":"https://api.github.com/repos/pydata/pandas/statuses/9838c443f3e065e44cf215a17fc32e5608540332","head":{"label":"chris-b1:dateoffset-add","ref":"dateoffset-add","sha":"9838c443f3e065e44cf215a17fc32e5608540332","user":{"login":"chris-b1","id":1924092,"avatar_url":"https://avatars.githubusercontent.com/u/1924092?v=3","gravatar_id":"","url":"https://api.github.com/users/chris-b1","html_url":"https://github.com/chris-b1","followers_url":"https://api.github.com/users/chris-b1/followers","following_url":"https://api.github.com/users/chris-b1/following{/other_user}","gists_url":"https://api.github.com/users/chris-b1/gists{/gist_id}","starred_url":"https://api.github.com/users/chris-b1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chris-b1/subscriptions","organizations_url":"https://api.github.com/users/chris-b1/orgs","repos_url":"https://api.github.com/users/chris-b1/repos","events_url":"https://api.github.com/users/chris-b1/events{/privacy}","received_events_url":"https://api.github.com/users/chris-b1/received_events","type":"User","site_admin":false},"repo":{"id":21056537,"name":"pandas","full_name":"chris-b1/pandas","owner":{"login":"chris-b1","id":1924092,"avatar_url":"https://avatars.githubusercontent.com/u/1924092?v=3","gravatar_id":"","url":"https://api.github.com/users/chris-b1","html_url":"https://github.com/chris-b1","followers_url":"https://api.github.com/users/chris-b1/followers","following_url":"https://api.github.com/users/chris-b1/following{/other_user}","gists_url":"https://api.github.com/users/chris-b1/gists{/gist_id}","starred_url":"https://api.github.com/users/chris-b1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chris-b1/subscriptions","organizations_url":"https://api.github.com/users/chris-b1/orgs","repos_url":"https://api.github.com/users/chris-b1/repos","events_url":"https://api.github.com/users/chris-b1/events{/privacy}","received_events_url":"https://api.github.com/users/chris-b1/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/chris-b1/pandas","description":"Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more","fork":true,"url":"https://api.github.com/repos/chris-b1/pandas","forks_url":"https://api.github.com/repos/chris-b1/pandas/forks","keys_url":"https://api.github.com/repos/chris-b1/pandas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chris-b1/pandas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chris-b1/pandas/teams","hooks_url":"https://api.github.com/repos/chris-b1/pandas/hooks","issue_events_url":"https://api.github.com/repos/chris-b1/pandas/issues/events{/number}","events_url":"https://api.github.com/repos/chris-b1/pandas/events","assignees_url":"https://api.github.com/repos/chris-b1/pandas/assignees{/user}","branches_url":"https://api.github.com/repos/chris-b1/pandas/branches{/branch}","tags_url":"https://api.github.com/repos/chris-b1/pandas/tags","blobs_url":"https://api.github.com/repos/chris-b1/pandas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chris-b1/pandas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chris-b1/pandas/git/refs{/sha}","trees_url":"https://api.github.com/repos/chris-b1/pandas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chris-b1/pandas/statuses/{sha}","languages_url":"https://api.github.com/repos/chris-b1/pandas/languages","stargazers_url":"https://api.github.com/repos/chris-b1/pandas/stargazers","contributors_url":"https://api.github.com/repos/chris-b1/pandas/contributors","subscribers_url":"https://api.github.com/repos/chris-b1/pandas/subscribers","subscription_url":"https://api.github.com/repos/chris-b1/pandas/subscription","commits_url":"https://api.github.com/repos/chris-b1/pandas/commits{/sha}","git_commits_url":"https://api.github.com/repos/chris-b1/pandas/git/commits{/sha}","comments_url":"https://api.github.com/repos/chris-b1/pandas/comments{/number}","issue_comment_url":"https://api.github.com/repos/chris-b1/pandas/issues/comments{/number}","contents_url":"https://api.github.com/repos/chris-b1/pandas/contents/{+path}","compare_url":"https://api.github.com/repos/chris-b1/pandas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chris-b1/pandas/merges","archive_url":"https://api.github.com/repos/chris-b1/pandas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chris-b1/pandas/downloads","issues_url":"https://api.github.com/repos/chris-b1/pandas/issues{/number}","pulls_url":"https://api.github.com/repos/chris-b1/pandas/pulls{/number}","milestones_url":"https://api.github.com/repos/chris-b1/pandas/milestones{/number}","notifications_url":"https://api.github.com/repos/chris-b1/pandas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chris-b1/pandas/labels{/name}","releases_url":"https://api.github.com/repos/chris-b1/pandas/releases{/id}","created_at":"2014-06-21T00:24:42Z","updated_at":"2014-08-17T16:11:03Z","pushed_at":"2015-08-11T02:39:04Z","git_url":"git://github.com/chris-b1/pandas.git","ssh_url":"git@github.com:chris-b1/pandas.git","clone_url":"https://github.com/chris-b1/pandas.git","svn_url":"https://github.com/chris-b1/pandas","homepage":"http://pandas.pydata.org","size":57050,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"pydata:master","ref":"master","sha":"58ae9dbf8a8ce919dfbe3b02dbb2a0c96b4e8db7","user":{"login":"pydata","id":1284191,"avatar_url":"https://avatars.githubusercontent.com/u/1284191?v=3","gravatar_id":"","url":"https://api.github.com/users/pydata","html_url":"https://github.com/pydata","followers_url":"https://api.github.com/users/pydata/followers","following_url":"https://api.github.com/users/pydata/following{/other_user}","gists_url":"https://api.github.com/users/pydata/gists{/gist_id}","starred_url":"https://api.github.com/users/pydata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pydata/subscriptions","organizations_url":"https://api.github.com/users/pydata/orgs","repos_url":"https://api.github.com/users/pydata/repos","events_url":"https://api.github.com/users/pydata/events{/privacy}","received_events_url":"https://api.github.com/users/pydata/received_events","type":"Organization","site_admin":false},"repo":{"id":858127,"name":"pandas","full_name":"pydata/pandas","owner":{"login":"pydata","id":1284191,"avatar_url":"https://avatars.githubusercontent.com/u/1284191?v=3","gravatar_id":"","url":"https://api.github.com/users/pydata","html_url":"https://github.com/pydata","followers_url":"https://api.github.com/users/pydata/followers","following_url":"https://api.github.com/users/pydata/following{/other_user}","gists_url":"https://api.github.com/users/pydata/gists{/gist_id}","starred_url":"https://api.github.com/users/pydata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pydata/subscriptions","organizations_url":"https://api.github.com/users/pydata/orgs","repos_url":"https://api.github.com/users/pydata/repos","events_url":"https://api.github.com/users/pydata/events{/privacy}","received_events_url":"https://api.github.com/users/pydata/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pydata/pandas","description":"Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more","fork":false,"url":"https://api.github.com/repos/pydata/pandas","forks_url":"https://api.github.com/repos/pydata/pandas/forks","keys_url":"https://api.github.com/repos/pydata/pandas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pydata/pandas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pydata/pandas/teams","hooks_url":"https://api.github.com/repos/pydata/pandas/hooks","issue_events_url":"https://api.github.com/repos/pydata/pandas/issues/events{/number}","events_url":"https://api.github.com/repos/pydata/pandas/events","assignees_url":"https://api.github.com/repos/pydata/pandas/assignees{/user}","branches_url":"https://api.github.com/repos/pydata/pandas/branches{/branch}","tags_url":"https://api.github.com/repos/pydata/pandas/tags","blobs_url":"https://api.github.com/repos/pydata/pandas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pydata/pandas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pydata/pandas/git/refs{/sha}","trees_url":"https://api.github.com/repos/pydata/pandas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pydata/pandas/statuses/{sha}","languages_url":"https://api.github.com/repos/pydata/pandas/languages","stargazers_url":"https://api.github.com/repos/pydata/pandas/stargazers","contributors_url":"https://api.github.com/repos/pydata/pandas/contributors","subscribers_url":"https://api.github.com/repos/pydata/pandas/subscribers","subscription_url":"https://api.github.com/repos/pydata/pandas/subscription","commits_url":"https://api.github.com/repos/pydata/pandas/commits{/sha}","git_commits_url":"https://api.github.com/repos/pydata/pandas/git/commits{/sha}","comments_url":"https://api.github.com/repos/pydata/pandas/comments{/number}","issue_comment_url":"https://api.github.com/repos/pydata/pandas/issues/comments{/number}","contents_url":"https://api.github.com/repos/pydata/pandas/contents/{+path}","compare_url":"https://api.github.com/repos/pydata/pandas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pydata/pandas/merges","archive_url":"https://api.github.com/repos/pydata/pandas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pydata/pandas/downloads","issues_url":"https://api.github.com/repos/pydata/pandas/issues{/number}","pulls_url":"https://api.github.com/repos/pydata/pandas/pulls{/number}","milestones_url":"https://api.github.com/repos/pydata/pandas/milestones{/number}","notifications_url":"https://api.github.com/repos/pydata/pandas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pydata/pandas/labels{/name}","releases_url":"https://api.github.com/repos/pydata/pandas/releases{/id}","created_at":"2010-08-24T01:37:33Z","updated_at":"2015-08-10T22:00:23Z","pushed_at":"2015-08-11T02:39:08Z","git_url":"git://github.com/pydata/pandas.git","ssh_url":"git@github.com:pydata/pandas.git","clone_url":"https://github.com/pydata/pandas.git","svn_url":"https://github.com/pydata/pandas","homepage":"http://pandas.pydata.org","size":149382,"stargazers_count":4779,"watchers_count":4779,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1811,"mirror_url":null,"open_issues_count":1512,"forks":1811,"open_issues":1512,"watchers":4779,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10744"},"html":{"href":"https://github.com/pydata/pandas/pull/10744"},"issue":{"href":"https://api.github.com/repos/pydata/pandas/issues/10744"},"comments":{"href":"https://api.github.com/repos/pydata/pandas/issues/10744/comments"},"review_comments":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10744/comments"},"review_comment":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10744/commits"},"statuses":{"href":"https://api.github.com/repos/pydata/pandas/statuses/9838c443f3e065e44cf215a17fc32e5608540332"}}}}