【问题标题】:Sorting an Excel Spreadsheet with Python使用 Python 对 Excel 电子表格进行排序
【发布时间】:2019-11-27 19:21:01
【问题描述】:

这是我的第一篇文章,我的编程知识相当有限。如果使用 python 给出答案,我将不胜感激,因为这是我熟悉的唯一语言。我也尝试过使用 pandas 和 xlrd,所以继续使用它们会很好。

问题是这样的:我有一个大约 30,000 个条目的公司列表。该列表采用 Google 表格的形式,但可以轻松导出到 Excel。表格的每一行代表一家公司,每一列代表与该公司有关的一条信息。

我的老板希望我们中的一个团队仔细阅读这张表格,并根据每个公司的行业对其进行分类,这显然需要很长时间。它涉及搜索每个公司名称,找到其行业,然后复制未排序表上的行并将其粘贴到分类表上的一行中。

我的想法是,使用 if 语句,我们可以很快地对大部分工作进行排序。

例如,假设一类公司称为“建筑”。如果公司名称包含“建筑”、“钢铁”或类似的词,我们可以自动将该公司(及其所有信息)移至名为“建筑”的新类别。新目的地最好是新 Excel 文件上的工作表。任何没有任何行业关键字的项目都会进入未排序的工作表。

我努力的是找到一种方法来对数据进行分类,将与每家公司有关的所有信息放在一起,并将一行从一个地方移动/复制到另一个地方。我可以使用哪些功能?我该如何解决这个问题?

我们的目标是根据名称自动对 30,000 个条目中的大部分而不是全部进行排序,因此我可能只需要手动对几千个与任何关键字都不匹配的未排序项目进行排序。

非常感谢您对此问题的任何帮助,我非常乐意提供任何人可能需要帮助此工作的任何其他详细信息。

【问题讨论】:

  • 这更像是一个概念问题而不是具体的编码问题,但作为一种基本方法,请查看 pandas 的 .str.contains() 搜索文本字符串的函数。
  • 至于“移动数据”,您应该可以直接使用 pandas 读取您的 Google 表格,根据过滤添加新列,然后将 CSV/Excel 文件导出到您的桌面或服务器我'我不确定您是否可以使用 python 就地修改 Google 工作表,但手动导出/上传并不算太糟糕,特别是因为您可能需要手动编写一些条目。
  • 查看 10 个左右的样本数据条目会有所帮助... 但是 听起来有一个映射到 dict 的关键字列表可能就是你想要的需要对每个公司进行分类。例如:keyword_dict = { 'Construction': ['construction', 'steel', 'contractor'], 'Energy': ['power', 'light', 'energy'], ...} 然后您可以使用 python 的内置 csv 模块来解析和编辑 csv 文件,或使用其他模块如 openpyxl 来处理 Excel 工作表。很乐意提供更多帮助,但没有更具体的信息很难:)

标签: python excel python-3.x pandas xlrd


【解决方案1】:

困难的部分是编写一个函数get_category(),它接受一行并返回一个类别。一旦你有了它,你就可以做像df['category'] = df.apply(get_category,axis = 1)这样的事情,它将插入一个列,说明公司是什么类别,或者category_dict = {category[0]: category[1] for category in df.groupby(df.apply(get_category,axis= 1)},它将创建一个字典,其中每个键都是一个类别,对应的值是一个数据框该类别中的公司。

对于get_category,您可能需要查看requests 模块。您可以自动获取公司名称并查看是否可以找到有关该公司的网站,然后在这些网站中搜索关键字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2016-09-06
    • 1970-01-01
    • 2019-01-28
    • 2020-02-19
    相关资源
    最近更新 更多