【问题标题】:How to convert complex excel table data into contructed data?如何将复杂的excel表格数据转换为结构化数据?
【发布时间】:2017-12-12 12:19:07
【问题描述】:

我遇到了以下问题,希望有人能给我一些建议。
我需要将很多不同形状的excel表格转换成构造数据,excel表格如下。

|--------------------|----|----|
|user:Sam            |    |    |
|--------------------|----|----|  
|mail:sam@example.com|    |    |  


|-------|----------------|-----|
|user   |Jack            |     |
|-------|----------------|-----|
|mail   |jack@example.com|     | 
|-------|----------------|-----|


|-------|-----|---------------|---------|
|user   |May  |               |         |
|-------|-----|---------------|---------|
|       |mail |may@example.com|         |
|-------|-----|---------------|---------|


|user   | Alex  |mail  |alex@example.com|

目标结果将类似于以下格式。

|-------|-------------------|
|user   | email             |
|-------|-------------------|
|Jack   | jack@example.com  |
|-------|-------------------|
|Sam    | sam@example.com   |
|-------|-------------------|
|Alex   | alex@example.com  |
|-------|-------------------|
|May    | may@example.com   |
|-------|-------------------|

我目前的解决方案是为每种类型的 excel 表定义一个函数。但是会有成千上万个不同的 excel 文件,所以我不得不重复编写类似的代码。所以我的问题是是否有通用的解决方案。

我找到了一个similar question,但没有更多信息。我认为机器学习可能有助于解决问题,但我对此知之甚少。有没有人可以分享一些想法? 非常感谢!

【问题讨论】:

    标签: python excel machine-learning


    【解决方案1】:

    查看您在问题中提供的模式,我们发现数据有时位于单独的单元格中,有时在文本中使用“:”分隔符进行编码。我会将其展平并解析组合文本以获得线性模式。

    我建议您使用xlrd 之类的内容阅读excel 文件。 然后逐个单元格提取文本并解析出您感兴趣的字段。

    <cell>'user'<cell|':'>user_name<cell>'mail'<cell|':'>email_address<cell>
    

    其中&lt;cell&gt; 是一个或多个单元格边界,可能分布在行上。

    获得用户电子邮件对后,您可以使用xlwt 将它们写出来。

    【讨论】:

      【解决方案2】:

      您有 4 种类型的文件。

      如果仅此而已,您可以用 4 个 if 语句编写 1 个函数。

      def table_sort(file):
      
          If file == condition:
               extract_data_this_way 
      
         elif file == other_condition:
              extract_data_this_way
      
         elif file == other_condition:
              extract_data_this_way
      
         else:
              extract_data_this_way
      

      如果你使用 pandas 来做这件事,它会更容易编码。

      我希望你有很多文件。您可以传入一个列表并使用 for 循环进行迭代。或者使用 glob 加载目录中的所有 excel 文件并循环。

      【讨论】:

      • Thist 仅适用于 4 种示例格式。 OP 表示他将不得不处理更多不同的格式......
      • 他说会有数千个文件,并介绍了 4 种类型。我的解决方案足以解决这个问题。
      • 感谢您的建议,并对我对问题的糟糕描述感到抱歉。条件是还有更多我不确定的格式。而且更复杂的是同一张表中还有其他字段需要提取。
      • 没问题。它只会让问题更有趣。
      猜你喜欢
      • 2018-11-27
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      相关资源
      最近更新 更多