簡體   English   中英

線性化多行多列表

[英]Linearizing a multi-row multi-column table

我有一個多行多列表如下:

 <!doctype html> <html> <head><style> table { border-collapse: collapse; } th, td { word-wrap: break-word; max-width: 100%; font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; border-bottom: 1px solid #ddd; padding: 5px; text-align: left; } tr:hover {background: #f4f4f4;} tr:hover .highlighted {background: repeating-linear-gradient( 45deg, #ffff99, #ffff99 10px, #f4f4f4 10px, #f4f4f4 20px );} .highlighted { background-color: #ffff99; } </style></head><body><table> <tr> <th colspan=1 rowspan=1 > Col1 </th><th colspan=1 rowspan=1 > Col2 </th><th colspan=1 rowspan=1 > Col3 </th><th colspan=1 rowspan=1 > Col4 </th></tr> <tr> <td colspan=1 rowspan=3 > Year / Ending Year </td><td colspan=1 rowspan=2 > Show </td><td colspan=1 rowspan=1 > BB </td><td colspan=1 rowspan=1 > 2013 </td></tr> <tr> <td colspan=1 rowspan=1 > GOT </td><td colspan=1 rowspan=2 > 2019 </td></tr> <tr> <td colspan=2 rowspan=1 style="text-align:center;"> Joker </td></tr>

表格數據是一個列表列表,其中包含從上到下和從左到右的單元格值,並帶有指示的行和列跨度。 對於多行單元格,該值僅出現在列表中的第一個對應行實例中。 數據如下所示:

table = 
    [
        [
            {'value': 'Col1', 'column_span': 1, 'row_span': 1, 'is_header': True},
            {'value': 'Col2', 'column_span': 1, 'row_span': 1, 'is_header': True},
            {'value': 'Col3', 'column_span': 1, 'row_span': 1, 'is_header': True},
            {'value': 'Col4', 'column_span': 1, 'row_span': 1, 'is_header': True}
        ],
        [
            {'value': 'Year / Ending Year', 'column_span': 1, 'row_span': 3, 'is_header': False},
            {'value': 'Show', 'column_span': 1, 'row_span': 2, 'is_header': False},
            {'value': 'BB', 'column_span': 1, 'row_span': 1, 'is_header': False},
            {'value': '2013', 'column_span': 1, 'row_span': 1, 'is_header': False}
        ],
        [
            {'value': 'GOT', 'column_span': 1, 'row_span': 1, 'is_header': False},
            {'value': '2019', 'column_span': 1, 'row_span': 2, 'is_header': False},
        ],
        [
            {'value': 'Joker', 'column_span': 2, 'row_span': 1, 'is_header': False}
        ]
    ]

如何將其轉換為單元格僅跨越單行和列的 pandas 數據框,如下所示:

 <!doctype html> <html> <head><style> table { border-collapse: collapse; } th, td { word-wrap: break-word; max-width: 100%; font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; border-bottom: 1px solid #ddd; padding: 5px; text-align: left; } tr:hover {background: #f4f4f4;} tr:hover .highlighted {background: repeating-linear-gradient( 45deg, #ffff99, #ffff99 10px, #f4f4f4 10px, #f4f4f4 20px );} .highlighted { background-color: #ffff99; } </style></head><body><table> <tr> <th colspan=1 rowspan=1 > Col1 </th><th colspan=1 rowspan=1 > Col2 </th><th colspan=1 rowspan=1 > Col3 </th><th colspan=1 rowspan=1 > Col4 </th></tr> <tr> <td colspan=1 rowspan=1 > Year / Ending Year </td><td colspan=1 rowspan=1 > Show </td><td colspan=1 rowspan=1 > BB </td><td colspan=1 rowspan=1 > 2013 </td></tr> <tr> <td colspan=1 rowspan=1 > Year / Ending Year </td><td colspan=1 rowspan=1 > Show </td><td colspan=1 rowspan=1 > GOT </td><td colspan=1 rowspan=1 > 2019 </td></tr> <tr> <td colspan=1 rowspan=1 > Year / Ending Year </td><td colspan=1 rowspan=1 > Joker </td><td colspan=1 rowspan=1 > Joker </td><td colspan=1 rowspan=1 > 2019 </td></tr> </table> </body></html>

編輯:我沒有表格的 html。 我無法在此處附加圖像,因此我將表格顯示為 html。

只需使用 pandas 中的 read_html 即可。 我把你的 html 放在 ''' ''' 之間,它起作用了。

import pandas as pd
pd.read_html(your_html)
>[                 Col1   Col2   Col3  Col4
 0  Year / Ending Year   Show     BB  2013
 1  Year / Ending Year   Show    GOT  2019
 2  Year / Ending Year  Joker  Joker  2019]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM