如何将复杂的Excel表数据转换为构造数据?

时间:2017-12-11 06:29:13

标签: python excel machine-learning

我遇到了如下问题,并希望有些机构可以给出一些建议 我需要将许多不同形状的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,但没有更多的信息。我认为机器学习可能有助于解决问题,但我对此知之甚少。有没有人可以分享一些想法? 非常感谢!

2 个答案:

答案 0 :(得分:1)

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

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

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

其中<cell>是一个或多个单元格边界,可能分布在行上。

拥有用户电子邮件对后,您可以使用xlwt将其写出来。

答案 1 :(得分:-1)

您有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文件并以这种方式循环。