如何在Julia DataFrames中合并重复行并对指定列求和
在Julia DataFrames中合并重复行并对指定列求和
当然可以做到!核心思路是先按你认定的“重复标识列”(也就是amp和mean)分组,然后对每组里的cycles列求和,同时保留amp和mean的对应值——毕竟这些列在重复组里是完全相同的,直接保留就行。
下面用你的示例数据来演示具体操作:
步骤1:准备示例数据
先补全并构造你给出的类似数据:
using DataFrames # 构造示例DataFrame Data1 = DataFrame( amp = [50.0, 150.0, 350.0, 150.0, 50.0, 350.0, 150.0, 50.0], mean = [250.0, 250.0, 150.0, 250.0, 250.0, 150.0, 250.0, 250.0], cycles = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] )
步骤2:分组并聚合求和
用groupby按amp和mean分组,再用combine对每组的cycles列求和:
# 按amp、mean分组,对cycles求和,结果列仍命名为cycles result = combine(groupby(Data1, [:amp, :mean]), :cycles => sum => :cycles)
结果展示
执行后得到的result就是你想要的效果:
3×3 DataFrame │ Row │ amp │ mean │ cycles │ ├─────┼───────┼───────┼────────┤ │ 1 │ 50.0 │ 250.0 │ 3.0 │ │ 2 │ 150.0 │ 250.0 │ 3.0 │ │ 3 │ 350.0 │ 150.0 │ 2.0 │
关键说明
groupby(Data1, [:amp, :mean]):把所有amp和mean完全相同的行归为一组,这一步相当于识别出了“重复行”(除了cycles列之外的重复)。:cycles => sum => :cycles:对每组的cycles列执行求和操作,最后把结果列命名为cycles(如果你想给求和后的列起别名,比如叫total_cycles,可以改成:cycles => sum => :total_cycles)。
这样就完美实现了:删除重复的amp+mean组合行,同时把每组的cycles值累加,amp和mean列保持不变。
内容的提问来源于stack exchange,提问作者maikkirapo
相关产品推荐
相关产品推荐

