【问题标题】:Python CSV create new HTML Table ColumnPython CSV 创建新的 HTML 表列
【发布时间】:2015-10-16 10:57:15
【问题描述】:

您好,我有一个格式为 csv 的文件

Col1  Col2  Col3  Col4 col5
AA    BA     CA    DA   EA
AB    BB     CB    DB   EB
AC    BC     CC    DC   EC
AD    BD     CD    DD   ED

如何使用新列 COLTAble 创建新的 csv 文件 新的 csv 将采用该格式。 Col1 Col2 Coltable 其中 coltable 使用 col3、col4 和 col5 并采用以下形式

<table border="1" cellpadding="0" cellspacing="0">
<tbody>
    <tr>
        <td rowspan="2" style="width:50%;">
        COL3
        </td>
        <td style="width:50%;">
        COL4
        </td>
    </tr>
    <tr>
        <td style="width:50%;">
        COL5
        </td>
    </tr>
</tbody>

【问题讨论】:

  • 我希望第三列包含 html ,其中包含来自 col3、Col4 和 col5 的信息。
  • 您在创建 html 并将其放入 csv 文件时遇到什么问题?
  • 反之亦然。我试图通过将 3 列合并到一个 HTML 表中来创建一个 HTML 列。因此,我仍然会得到一个 CSV 文件。

标签: python html python-2.7 csv python-3.x


【解决方案1】:

我不确定我是否完全理解您的问题。您的最终 csv 是否每行都有不同的 html 表格字符串?

尽管如此,pandas 对于读写这样的文件确实很有用。

>>> import pandas as pd
>>> df = pd.read_csv('temp.csv')
>>> print df
     Col1 Col2 Col3 Col4 col5
0   AA   BA   CA   DA   EA
1   AB   BB   CB   DB   EB
2   AC   BC   CC   DC   EC
3   AD   BD   CD   DD   ED



>>> df['Coltable'] = df.apply(lambda row: row[2:].to_frame().to_html(), axis=1)
>>> df_new = df.iloc[:, [0, 1, -1]]
>>> print df_new
Col1 Col2                                           Coltable
0   AA   BA  <table border="1" class="dataframe">\n  <thead...
1   AB   BB  <table border="1" class="dataframe">\n  <thead...
2   AC   BC  <table border="1" class="dataframe">\n  <thead...
3   AD   BD  <table border="1" class="dataframe">\n  <thead...
    df_new.to_csv('temp_new.csv', index=False)


>>> df_new.to_csv('temp_new.csv', index=False)

现在 temp_new.csv 看起来像

Col1,Col2,Coltable
AA,BA,"<table border=""1"" class=""dataframe"">
  <thead>
    <tr style=""text-align: right;"">
      <th></th>
      <th>0</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>Col3</th>
      <td>CA</td>
    </tr>
    <tr>
      <th>Col4</th>
      <td>DA</td>
    </tr>
    <tr>
      <th>col5</th>
      <td>EA</td>
    </tr>
  </tbody>
</table>"
AB,BB,"<table border=""1"" class=""dataframe"">
  <thead>
    <tr style=""text-align: right;"">
      <th></th>
      <th>1</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>Col3</th>
      <td>CB</td>
    </tr>
    <tr>
      <th>Col4</th>
      <td>DB</td>
    </tr>
    <tr>
      <th>col5</th>
      <td>EB</td>
    </tr>
  </tbody>
</table>"
AC,BC,"<table border=""1"" class=""dataframe"">
  <thead>
    <tr style=""text-align: right;"">
      <th></th>
      <th>2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>Col3</th>
      <td>CC</td>
    </tr>
    <tr>
      <th>Col4</th>
      <td>DC</td>
    </tr>
    <tr>
      <th>col5</th>
      <td>EC</td>
    </tr>
  </tbody>
</table>"
AD,BD,"<table border=""1"" class=""dataframe"">
  <thead>
    <tr style=""text-align: right;"">
      <th></th>
      <th>3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>Col3</th>
      <td>CD</td>
    </tr>
    <tr>
      <th>Col4</th>
      <td>DD</td>
    </tr>
    <tr>
      <th>col5</th>
      <td>ED</td>
    </tr>
  </tbody>
</table>"

【讨论】:

  • 从您的方法中您确实理解了我的问题,将对 Pandas 有一个很好的阅读然后尝试您的建议方法。谢谢
猜你喜欢
  • 2013-08-15
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
相关资源
最近更新 更多