【问题标题】:How to merge some rows of a CSV based on conditions?如何根据条件合并 CSV 的某些行?
【发布时间】:2021-01-31 03:03:46
【问题描述】:

我在 CSV 文件中有数据,我需要根据条件合并一些行。这个前。对于我想要的,必须满足两个条件才能合并行。文本相同,类型相同。

例如。 B3,B4 具有相同的类型 (C3,C4) 和相同的文本 (A3)。所以合并B3和B4。从 A3 到 A8 的所有行在相同的文本中,从 A4 到 A8 为空行。来自A9的另一个文本,所以它不是空的。

谁能帮忙写一个 Python 程序来做这件事?

【问题讨论】:

  • 你用什么模块来读取文件?请edit您的问题并添加此信息以及您自己尝试执行您描述的操作的代码。
  • @martineau 我用 panda 试过,但我是新程序员,我不知道如何处理它。但图片描述了我需要什么。感谢您的帮助
  • 对不起,我不是熊猫专家。一个可行的替代方案是使用 Python 标准库中的 csv 模块——所以我建议您查看文档并尝试使用它编写一些代码。如果您不知道如何使代码工作,然后提出问题并尝试。请注意,棘手的部分可能是将要处理的行分组在一起。
  • @martineau 我必须检查文本的开始位置,然后查看下一个文本的位置并取上一行,然后应用这些条款。然后继续到最后一行。这对我来说很复杂,因为我是一名新程序员
  • 然后提出你的问题并展示你的尝试。

标签: python excel csv merge


【解决方案1】:

这是我使用 Pandas groupby 函数(按 Type 分组)和 agg 函数(用于聚合)的非常简单的解决方案。 可以在here 找到文档。

df.groupby(by=['Text','Type']).agg('.'.join)

df 是您的数据框。

唯一的问题是,只有当您在数据框的所有“文本”行中都有人名(即约翰或朱莉娅)时,它才有效。

因此我的数据框df 如下所示:

    Text    Product     Type
0   John    Earphone    Mobile accessories
1   John    Headsets    Mobile accessories
2   John    Mobile      Mobile
3   John    PlayStation Game
4   John    Xbox        Game
5   John    Perfume     beautiful smell
6   Julia   Makeup      Cosmetic
7   Julia   Perfume     beautiful smell
8   Julia   Foundation  Cosmetic

这是输出

Text    Type                Product
John    Game                PlayStation.Xbox
        Mobile              Mobile
        Mobile accessories  Earphone.Headsets
        beautiful smell     Perfume
Julia   Cosmetic            Makeup.Foundation
        beautiful smell     Perfume

填充“文本”列的空行应该不会太难。也许你可以使用 NumPy 的 full 函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2021-11-28
    • 2022-01-23
    • 2017-11-28
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多