gpt4 book ai didi

python - 按最小值对行进行分组

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:22 24 4
gpt4 key购买 nike

问题是我要构建一些表,而一些值低于特定阈值。例如:

    S1  S2  S3
A 700 367 751
B 354 103 143
C 18 7 6
D 27 11 5
E 3 6 1
F 8 2 9
G 1 3 2

我希望保留值包含至少一个值等于或大于 10 的行,并合并值小于 10 的行以创建名为 "Other (<10)" 的行:

1 - 表格的一部分,其行至少有一个单元格包含一个大于 10 的值(C 行;值 18):

    S1  S2  S3
A 700 367 751
B 354 103 143
C 18 7 6

2 - 任何值大于 10 的表格部分。

E   3   6   1
F 8 2 9
G 1 3 2

最终表格的最后一行是 E、F 和 G 列的总和,包括“Other(>10)”行名称。像这样:

            S1  S2  S3
A 700 367 751
B 354 103 143
C 18 7 6
D 27 11 5
Other(<10) 12 11 12

最佳答案

如果您对 R 解决方案感兴趣:

filtered.df <-   rbind( df[ apply(df, 1, function(x){any(x>=10)}), ],
colSums( df[ apply(df, 1, function(x){all(x< 10)}), ]))

这将是输出:

> filtered.df

# [,1] [,2] [,3]
# [1,] 700 367 751
# [2,] 354 103 143
# [3,] 18 7 6
# [4,] 27 11 5
# [5,] 12 11 12

数据:

df <- structure(c(700, 354, 18, 27, 3, 8, 1, 367, 103, 7, 11, 6, 2, 3, 751, 143, 6, 5, 1, 9, 2), .Dim = c(7L, 3L))

更新:包括列名和行名:


正如 OP 所要求的,对于列名和行名,这将是数据:

 df <- structure(c(700, 354, 18, 27, 3, 8, 1, 367, 103, 7, 11, 6, 2, 3, 751, 143, 6, 5, 1, 9, 2), .Dim = c(7L, 3L), .Dimnames = list(    c("A", "B", "C", "D", "E", "F", "G"), c("s1", "s2", "s3")))

然后使用上面相同的解决方案我们将得到:

> filtered.df

# s1 s2 s3
# A 700 367 751
# B 354 103 143
# C 18 7 6
# D 27 11 5
# 12 11 12

关于python - 按最小值对行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44392787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com