gpt4 book ai didi

python - awk 或 python 中的重复计数和条件筛选

转载 作者:行者123 更新时间:2023-12-01 05:29:26 25 4
gpt4 key购买 nike

我有一个数据集如下:

a  b  2.7
a b 9.4
a b 6.9
x l 0.004
y m 0.5

表示有很多重复项

我需要在第 2 列中取出重复项并折叠,但还要在第 3 列中获取重复项的最低值。如果没有看到重复项,则按原样打印。还如果第 2 列相同,则打印最低第 3 列希望输出:

3 a b 2.7
1 x l 0.004
1 y m 0.5

到目前为止,我已经排序以获取重复项的计数(如 col1 所示)。但是我无法进一步获取最低的 3col 值。我想在 awk 或 python 中完成此操作。请帮忙!

sort -k2,2nr myfile.txt| less

基因。

最佳答案

在Python中:

summary = {}

# ** If order is important, use collections.OrderedDcit **
#
#import collections
#summary = collections.OrderedDict()

with open('dataset.txt') as f:
for line in f:
col1, col2, value = line.split()
value = float(value)
if col2 not in summary:
summary[col2] = [0, col1, value] # count, col1, col3
else:
if value < summary[col2][1]:
summary[col2][1] = col1
summary[col2][2] = value
summary[col2][0] += 1

for col2, s in summary.iteritems():
print '{0[0]} {0[1]} {1} {0[2]}'.format(s, col2)
<小时/>

在 awk 中:

awk '{if (!($2 in min) || $3<min[$2]) {min[$2]=$3; col1[$2]=$1} cnt[$2]++} \
END{for (i in cnt) print cnt[i]" "col1[i]" "i" "min[i]}' dataset.txt

关于python - awk 或 python 中的重复计数和条件筛选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20591277/

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