{"action":"created","issue":{"url":"https://api.github.com/repos/pandas-dev/pandas/issues/21487","repository_url":"https://api.github.com/repos/pandas-dev/pandas","labels_url":"https://api.github.com/repos/pandas-dev/pandas/issues/21487/labels{/name}","comments_url":"https://api.github.com/repos/pandas-dev/pandas/issues/21487/comments","events_url":"https://api.github.com/repos/pandas-dev/pandas/issues/21487/events","html_url":"https://github.com/pandas-dev/pandas/pull/21487","id":332555746,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk1MDExMTA4","number":21487,"title":"read_html: Handle colspan and rowspan","user":{"login":"adamhooper","id":10812,"node_id":"MDQ6VXNlcjEwODEy","avatar_url":"https://avatars3.githubusercontent.com/u/10812?v=4","gravatar_id":"","url":"https://api.github.com/users/adamhooper","html_url":"https://github.com/adamhooper","followers_url":"https://api.github.com/users/adamhooper/followers","following_url":"https://api.github.com/users/adamhooper/following{/other_user}","gists_url":"https://api.github.com/users/adamhooper/gists{/gist_id}","starred_url":"https://api.github.com/users/adamhooper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamhooper/subscriptions","organizations_url":"https://api.github.com/users/adamhooper/orgs","repos_url":"https://api.github.com/users/adamhooper/repos","events_url":"https://api.github.com/users/adamhooper/events{/privacy}","received_events_url":"https://api.github.com/users/adamhooper/received_events","type":"User","site_admin":false},"labels":[{"id":76812,"node_id":"MDU6TGFiZWw3NjgxMg==","url":"https://api.github.com/repos/pandas-dev/pandas/labels/Enhancement","name":"Enhancement","color":"4E9A06","default":false},{"id":57395487,"node_id":"MDU6TGFiZWw1NzM5NTQ4Nw==","url":"https://api.github.com/repos/pandas-dev/pandas/labels/IO%20HTML","name":"IO HTML","color":"006b75","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2018-06-14T20:38:24Z","updated_at":"2018-06-27T14:05:00Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/pandas-dev/pandas/pulls/21487","html_url":"https://github.com/pandas-dev/pandas/pull/21487","diff_url":"https://github.com/pandas-dev/pandas/pull/21487.diff","patch_url":"https://github.com/pandas-dev/pandas/pull/21487.patch"},"body":"This is essentially a rebased and squashed #17054 (mad props to @jowens\r\nfor doing all the hard thinking). My tweaks:\r\n\r\n* test_computer_sales_page (see #17074) no longer tests for ParserError,\r\n  because the ParserError was a bug caused by missing colspan support.\r\n  Now, test that MultiIndex works as expected.\r\n* I respectfully removed the fill_rowspan argument from #17073. Instead,\r\n  the virtual cells created by rowspan/colspan are always copies of the\r\n  real cells' text. This prevents _infer_columns() from naming virtual\r\n  cells as \"Unnamed: ...\"\r\n* I removed a small layer of abstraction to respect #20891 (multiple\r\n  tbody support), which was implemented after @jowens' pull request.\r\n  Now _HtmlFrameParser has _parse_thead_trs, _parse_tbody_trs and\r\n  _parse_tfoot_trs, each returning a list of trs. That let me remove\r\n  _parse_tr, Making All The Tests Pass.\r\n* That caused a snowball effect. lxml does not fix malformed thead, as\r\n  tested by spam.html. The previous hacky workaround was in\r\n  _parse_raw_thead, but the new _parse_thead_trs signature returns nodes\r\n  instead of text. The new hacky solution: return the thead itself,\r\n  pretending it's a tr. This works in all the tests. A better solution\r\n  is to use html5lib with lxml; but that might belong in a separate pull\r\n  request.\r\n\r\n- [x] closes #17054\r\n- [x] closes #21641\r\n- [x] tests added / passed\r\n- [x] passes `git diff upstream/master -u -- \"*.py\" | flake8 --diff`\r\n- [x] whatsnew entry\r\n"},"comment":{"url":"https://api.github.com/repos/pandas-dev/pandas/issues/comments/400683621","html_url":"https://github.com/pandas-dev/pandas/pull/21487#issuecomment-400683621","issue_url":"https://api.github.com/repos/pandas-dev/pandas/issues/21487","id":400683621,"node_id":"MDEyOklzc3VlQ29tbWVudDQwMDY4MzYyMQ==","user":{"login":"adamhooper","id":10812,"node_id":"MDQ6VXNlcjEwODEy","avatar_url":"https://avatars3.githubusercontent.com/u/10812?v=4","gravatar_id":"","url":"https://api.github.com/users/adamhooper","html_url":"https://github.com/adamhooper","followers_url":"https://api.github.com/users/adamhooper/followers","following_url":"https://api.github.com/users/adamhooper/following{/other_user}","gists_url":"https://api.github.com/users/adamhooper/gists{/gist_id}","starred_url":"https://api.github.com/users/adamhooper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamhooper/subscriptions","organizations_url":"https://api.github.com/users/adamhooper/orgs","repos_url":"https://api.github.com/users/adamhooper/repos","events_url":"https://api.github.com/users/adamhooper/events{/privacy}","received_events_url":"https://api.github.com/users/adamhooper/received_events","type":"User","site_admin":false},"created_at":"2018-06-27T14:04:59Z","updated_at":"2018-06-27T14:04:59Z","author_association":"CONTRIBUTOR","body":"Indeed -- I rebased over adamhooper/master instead of pandas/master. I've learned my lesson: merge, don't rebase.\r\n\r\nFixed by ... er ... rebasing. Correctly, this time."}}
{"actor":{"display_login":"adamhooper"}}