{"action":"created","comment":{"url":"https://api.github.com/repos/pydata/pandas/pulls/comments/37131805","id":37131805,"diff_hunk":"@@ -1613,20 +1614,26 @@ def interpolate_1d(xvalues, yvalues, method='linear', limit=None,\n                              'DatetimeIndex')\n         method = 'values'\n \n-    def _interp_limit(invalid, limit):\n+    def _interp_limit(invalid, fw_limit, bw_limit):\n         \"\"\"mask off values that won't be filled since they exceed the limit\"\"\"\n         all_nans = np.where(invalid)[0]\n         if all_nans.size == 0: # no nans anyway\n             return []\n-        violate = [invalid[x:x + limit + 1] for x in all_nans]\n-        violate = np.array([x.all() & (x.size > limit) for x in violate])\n-        return all_nans[violate] + limit\n+        violate = [invalid[x - bw_limit:x + fw_limit + 1] for x in all_nans]\n+        violate = np.array([x.all() & (x.size > bw_limit + fw_limit)\n+                            for x in violate])\n+        return all_nans[violate] + fw_limit - bw_limit\n \n     xvalues = getattr(xvalues, 'values', xvalues)\n     yvalues = getattr(yvalues, 'values', yvalues)\n \n     if limit:\n-        violate_limit = _interp_limit(invalid, limit)\n+        fw_limit = bw_limit = limit\n+        if limit_direction == 'forward':","path":"pandas/core/common.py","position":32,"original_position":32,"commit_id":"2249d61ce98c94378aa48e5dd834bba97e310650","original_commit_id":"2249d61ce98c94378aa48e5dd834bba97e310650","user":{"login":"shoyer","id":1217238,"avatar_url":"https://avatars.githubusercontent.com/u/1217238?v=3","gravatar_id":"","url":"https://api.github.com/users/shoyer","html_url":"https://github.com/shoyer","followers_url":"https://api.github.com/users/shoyer/followers","following_url":"https://api.github.com/users/shoyer/following{/other_user}","gists_url":"https://api.github.com/users/shoyer/gists{/gist_id}","starred_url":"https://api.github.com/users/shoyer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shoyer/subscriptions","organizations_url":"https://api.github.com/users/shoyer/orgs","repos_url":"https://api.github.com/users/shoyer/repos","events_url":"https://api.github.com/users/shoyer/events{/privacy}","received_events_url":"https://api.github.com/users/shoyer/received_events","type":"User","site_admin":false},"body":"Let's include a little bit more validation for limit_direction to catch typos","created_at":"2015-08-15T02:00:05Z","updated_at":"2015-08-15T02:00:05Z","html_url":"https://github.com/pydata/pandas/pull/10691#discussion_r37131805","pull_request_url":"https://api.github.com/repos/pydata/pandas/pulls/10691","_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments/37131805"},"html":{"href":"https://github.com/pydata/pandas/pull/10691#discussion_r37131805"},"pull_request":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10691"}}},"pull_request":{"url":"https://api.github.com/repos/pydata/pandas/pulls/10691","id":41050201,"html_url":"https://github.com/pydata/pandas/pull/10691","diff_url":"https://github.com/pydata/pandas/pull/10691.diff","patch_url":"https://github.com/pydata/pandas/pull/10691.patch","issue_url":"https://api.github.com/repos/pydata/pandas/issues/10691","number":10691,"state":"open","locked":false,"title":"Allow interpolate() to fill backwards as well as forwards","user":{"login":"lmjohns3","id":53048,"avatar_url":"https://avatars.githubusercontent.com/u/53048?v=3","gravatar_id":"","url":"https://api.github.com/users/lmjohns3","html_url":"https://github.com/lmjohns3","followers_url":"https://api.github.com/users/lmjohns3/followers","following_url":"https://api.github.com/users/lmjohns3/following{/other_user}","gists_url":"https://api.github.com/users/lmjohns3/gists{/gist_id}","starred_url":"https://api.github.com/users/lmjohns3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lmjohns3/subscriptions","organizations_url":"https://api.github.com/users/lmjohns3/orgs","repos_url":"https://api.github.com/users/lmjohns3/repos","events_url":"https://api.github.com/users/lmjohns3/events{/privacy}","received_events_url":"https://api.github.com/users/lmjohns3/received_events","type":"User","site_admin":false},"body":"closes #9218\r\ncloses #10420 \r\n\r\n**Edit: changed approach, see the rest of the thread**\r\n\r\nCurrently, interpolate() has a \"limit\" kwarg that, when set to n,\r\nprevents interpolated values from propagating more than n rows forward.\r\n\r\nThis change adds a \"backward_limit\" kwarg that, when set to n, prevents\r\ninterpolated values from propagating more than n rows backward.\r\n\r\nThe behavior prior to this change is as though \"backward_limit\" existed\r\nbut was always set to 0. That is, interpolated values never filled in\r\nNaNs immediately before a non-NaN value (unless those same NaNs happened\r\nto follow a different, non-NaN value within \"limit\" rows).\r\n\r\nIn this change the \"backward_limit\" kwarg has no effect if \"limit\" is\r\nnot specified (i.e., None).\r\n\r\n","created_at":"2015-07-28T19:26:37Z","updated_at":"2015-08-15T02:00:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5bc76d9c4c5c1bb241bcf6025bf6f868f0d10cef","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":180,"closed_issues":254,"state":"open","created_at":"2015-03-23T10:47:38Z","updated_at":"2015-08-14T21:05:05Z","due_on":"2015-08-31T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/pydata/pandas/pulls/10691/commits","review_comments_url":"https://api.github.com/repos/pydata/pandas/pulls/10691/comments","review_comment_url":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pydata/pandas/issues/10691/comments","statuses_url":"https://api.github.com/repos/pydata/pandas/statuses/2249d61ce98c94378aa48e5dd834bba97e310650","head":{"label":"lmjohns3:master","ref":"master","sha":"2249d61ce98c94378aa48e5dd834bba97e310650","user":{"login":"lmjohns3","id":53048,"avatar_url":"https://avatars.githubusercontent.com/u/53048?v=3","gravatar_id":"","url":"https://api.github.com/users/lmjohns3","html_url":"https://github.com/lmjohns3","followers_url":"https://api.github.com/users/lmjohns3/followers","following_url":"https://api.github.com/users/lmjohns3/following{/other_user}","gists_url":"https://api.github.com/users/lmjohns3/gists{/gist_id}","starred_url":"https://api.github.com/users/lmjohns3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lmjohns3/subscriptions","organizations_url":"https://api.github.com/users/lmjohns3/orgs","repos_url":"https://api.github.com/users/lmjohns3/repos","events_url":"https://api.github.com/users/lmjohns3/events{/privacy}","received_events_url":"https://api.github.com/users/lmjohns3/received_events","type":"User","site_admin":false},"repo":{"id":39839997,"name":"pandas","full_name":"lmjohns3/pandas","owner":{"login":"lmjohns3","id":53048,"avatar_url":"https://avatars.githubusercontent.com/u/53048?v=3","gravatar_id":"","url":"https://api.github.com/users/lmjohns3","html_url":"https://github.com/lmjohns3","followers_url":"https://api.github.com/users/lmjohns3/followers","following_url":"https://api.github.com/users/lmjohns3/following{/other_user}","gists_url":"https://api.github.com/users/lmjohns3/gists{/gist_id}","starred_url":"https://api.github.com/users/lmjohns3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lmjohns3/subscriptions","organizations_url":"https://api.github.com/users/lmjohns3/orgs","repos_url":"https://api.github.com/users/lmjohns3/repos","events_url":"https://api.github.com/users/lmjohns3/events{/privacy}","received_events_url":"https://api.github.com/users/lmjohns3/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lmjohns3/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/lmjohns3/pandas","forks_url":"https://api.github.com/repos/lmjohns3/pandas/forks","keys_url":"https://api.github.com/repos/lmjohns3/pandas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lmjohns3/pandas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lmjohns3/pandas/teams","hooks_url":"https://api.github.com/repos/lmjohns3/pandas/hooks","issue_events_url":"https://api.github.com/repos/lmjohns3/pandas/issues/events{/number}","events_url":"https://api.github.com/repos/lmjohns3/pandas/events","assignees_url":"https://api.github.com/repos/lmjohns3/pandas/assignees{/user}","branches_url":"https://api.github.com/repos/lmjohns3/pandas/branches{/branch}","tags_url":"https://api.github.com/repos/lmjohns3/pandas/tags","blobs_url":"https://api.github.com/repos/lmjohns3/pandas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lmjohns3/pandas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lmjohns3/pandas/git/refs{/sha}","trees_url":"https://api.github.com/repos/lmjohns3/pandas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lmjohns3/pandas/statuses/{sha}","languages_url":"https://api.github.com/repos/lmjohns3/pandas/languages","stargazers_url":"https://api.github.com/repos/lmjohns3/pandas/stargazers","contributors_url":"https://api.github.com/repos/lmjohns3/pandas/contributors","subscribers_url":"https://api.github.com/repos/lmjohns3/pandas/subscribers","subscription_url":"https://api.github.com/repos/lmjohns3/pandas/subscription","commits_url":"https://api.github.com/repos/lmjohns3/pandas/commits{/sha}","git_commits_url":"https://api.github.com/repos/lmjohns3/pandas/git/commits{/sha}","comments_url":"https://api.github.com/repos/lmjohns3/pandas/comments{/number}","issue_comment_url":"https://api.github.com/repos/lmjohns3/pandas/issues/comments{/number}","contents_url":"https://api.github.com/repos/lmjohns3/pandas/contents/{+path}","compare_url":"https://api.github.com/repos/lmjohns3/pandas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lmjohns3/pandas/merges","archive_url":"https://api.github.com/repos/lmjohns3/pandas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lmjohns3/pandas/downloads","issues_url":"https://api.github.com/repos/lmjohns3/pandas/issues{/number}","pulls_url":"https://api.github.com/repos/lmjohns3/pandas/pulls{/number}","milestones_url":"https://api.github.com/repos/lmjohns3/pandas/milestones{/number}","notifications_url":"https://api.github.com/repos/lmjohns3/pandas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lmjohns3/pandas/labels{/name}","releases_url":"https://api.github.com/repos/lmjohns3/pandas/releases{/id}","created_at":"2015-07-28T14:51:16Z","updated_at":"2015-07-28T14:51:20Z","pushed_at":"2015-08-14T20:52:30Z","git_url":"git://github.com/lmjohns3/pandas.git","ssh_url":"git@github.com:lmjohns3/pandas.git","clone_url":"https://github.com/lmjohns3/pandas.git","svn_url":"https://github.com/lmjohns3/pandas","homepage":"http://pandas.pydata.org","size":57350,"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":"bcc7b0b6f8329c421d1991d1b4989afdc46ab90c","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-15T00:03:19Z","pushed_at":"2015-08-14T23:18:00Z","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":152078,"stargazers_count":4799,"watchers_count":4799,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1819,"mirror_url":null,"open_issues_count":1515,"forks":1819,"open_issues":1515,"watchers":4799,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10691"},"html":{"href":"https://github.com/pydata/pandas/pull/10691"},"issue":{"href":"https://api.github.com/repos/pydata/pandas/issues/10691"},"comments":{"href":"https://api.github.com/repos/pydata/pandas/issues/10691/comments"},"review_comments":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10691/comments"},"review_comment":{"href":"https://api.github.com/repos/pydata/pandas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pydata/pandas/pulls/10691/commits"},"statuses":{"href":"https://api.github.com/repos/pydata/pandas/statuses/2249d61ce98c94378aa48e5dd834bba97e310650"}}}}