如何自动对具有共同属性的分组行子集的列数据求和(excel csv 电子表格)

如何自动对具有共同属性的分组行子集的列数据求和(excel csv 电子表格)

我有一个很大的 csv 文件(一百万行),我将其导入到了 excel 中。我必须做一个简单的操作,手动操作很容易,但我应该对数千个分组进行操作,所以我正在寻找一个自动化系统来执行此操作。

我试着解释一下:我将具有前 2 个公共列数据的行分组,即示例图片中选择的行(具有属性 6 和 0101)。我将它们称为源行。

我需要创建一个新行,其前两列具有相同的两个值(6 和 0101);此新行中的其他值必须是源行各列的总和(在示例中结果应为 1,1,2,0,0,2,0,1....)。

图片中选择的源行应删除

然后该过程应继续进行下一个分组(7 和 0101)、(8 和 0101)等等...直至最后。

我不太擅长使用 excel(或其他软件)来自动执行操作。我想知道 excel 中是否有简单的方法,或者是否可以通过 bash 脚本来完成 o 在数据库软件中加载 csv 文件并对其进行详细说明并提取新的 csv 文件。任何简单的解决方案都会很有趣。

我希望我的英语能被理解,非常感谢您的帮助!

附言:请记住我是新手...最简单就是最好!:)

示例图片

答案1

以下是使用 Power Query 的示例,可在 Windows Excel 2010+ 和 Office 365 中使用

使用 Power Query

  • Data => Get&Transform => from Text/CSV并选择文件 => 转换
  • 当 PQ 编辑器打开时:Home => Advanced Editor
  • 记下第二行代码中的路径
  • 将下面的 M 代码粘贴到您所看到的位置
  • 将第 2 行的路径名改回最初生成的路径名。
  • 阅读评论并探索Applied Steps以了解算法
  • 编码方式应适应任意数量的列

M 代码

let

//Read in CSV document and convert to table
    csvSource = Csv.Document(File.Contents("C:\users\ron\desktop\test.csv"),[Delimiter=",", Encoding=1252, QuoteStyle=QuoteStyle.None]),
    Source = Table.PromoteHeaders(csvSource,[PromoteAllScalars = true]),

//type first two columns as Text and
//type all columns after first two as integers (but could change to floats if need be
    #"Changed Type" = Table.TransformColumnTypes(Source,
        List.Transform(List.FirstN(Table.ColumnNames(Source),2), each {_, Text.Type}) &
        List.Transform(List.RemoveFirstN(Table.ColumnNames(Source),2), each {_, Int64.Type})),

//create dynamic list of Sum functions for the Table.Group command
//we will sum all columns except the first two
//so need to create a list of a sum function for each column in the table
colsToSum= List.RemoveFirstN(Table.ColumnNames(#"Changed Type"),2),
sumFunction = List.Transform(colsToSum, 
        (C) => {C, each List.Sum(Table.Column(_, C)), type number}),

//Group on first two columns and aggregate with Sum
groupSum = Table.Group(#"Changed Type",
                List.FirstN(Table.ColumnNames(#"Changed Type"),2), 
                sumFunction)

in
    groupSum

来源 作为 csv 文档

col1,col2,col3,col4,col5
1,0101,0,1,0
1,0101,0,2,1
1,0101,0,3,0
1,0101,1,4,1
2,0101,0,5,0
2,0101,0,6,1
2,0102,1,7,0
2,0102,0,8,1
3,0101,0,1,0
3,0101,0,2,1
3,0101,0,3,0
3,0101,1,4,1
4,0101,0,5,0
4,0101,0,6,1
4,0101,0,7,0

结果
在此处输入图片描述

相关内容