- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个很大的制表符分隔
文件,如下所示:
chr1 9507728 9517729 0 chr1 9507728 9517729 5S_rRNA
chr1 9537731 9544392 0 chr1 9537731 9547732 5S_rRNA
chr1 9497727 9507728 0 chr1 9497727 9507728 5S_rRNA
chr1 9517729 9527730 0 chr1 9517729 9527730 5S_rRNA
chr8 1118560 1118591 1 chr8 1112435 1122474 AK128400
chr8 1118591 1121351 0 chr8 1112435 1122474 AK128400
chr8 1121351 1121382 1 chr8 1112435 1122474 AK128400
chr8 1132513 1142552 0 chr8 1132513 1142552 AK128400
chr19 53436277 53446295 0 chr19 53436277 53446295 AK128361
chr19 53456313 53465410 0 chr19 53456313 53466331 AK128361
chr19 53465410 53465441 1 chr19 53456313 53466331 AK128361
chr19 53466331 53476349 0 chr19 53466331 53476349 AK128361
根据最后一列,有 3 组,每组有 4 行。根据第四列的值,我想获得每组第一行、每组第二行、每组第三行和每组第四行的平均值。因此,在预期输出中,我将有 4 行(因为每组有 4 行)和 2 列。第一列是 ID,在本例中为 1、2、3 和 4。第二列是我提到的应如何计算的平均值。
预期输出
:
1 0.33
2 0
3 0.66
4 0
我正在尝试使用以下命令在 python 2.7 中执行此操作:
file = open('myfile.txt', 'r')
average = []
for i in file:
ave = i[3]/3
average.append(ave)
这仅返回一个错误的数字。你知道如何修复它以获得预期的输出吗?
最佳答案
这是一种方法:
with open("myfile.txt") as inFile:
lines = [" ".join(line.split()) for line in inFile]
s=0
for i in range(4):
for j in range(0,9,4):
s += int(lines[i + j].split()[3])
avg = s / 3
print("%d %.2f" % (i+1, avg))
s=0
输出:
1 0.33
2 0.00
3 0.67
4 0.00
或者您可以使用列表理解:
with open("myfile.txt") as inFile:
lines = [" ".join(line.split()) for line in inFile]
s = [sum([int(lines[i + j].split()[3]) for j in range(0,9,4)]) for i in range(4)]
avg = [elem / 3 for elem in s]
for i, value in enumerate(avg):
print("%d %.2f" % (i+1, value))
请记住,上述代码片段是按照您在问题中提供的确切数据格式进行测试的。
关于python - 根据 python 中的特定列对行进行分组和平均 - 改写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53539612/
我一直在尝试通过一些我为自己开发的练习题重新认识 SQL,但正在努力寻找更好的方法来解决以下问题: 播放列表 id title 1 Title1 2 Title2 播放列表剪辑 id pl
我有一个很大的制表符分隔文件,如下所示: chr1 9507728 9517729 0 chr1 9507728 9517729 5S_rRNA chr1 9537731 954
我经常想编辑提交消息,而不必从上次提交中重新选择文件集。 git commit file1.c file2.c 提交消息中的意外拼写错误。 git commit file1.c file2.c --a
如何编辑或改写 merge 提交的消息? git commit --amend 如果它是最后一次提交 (HEAD) 则可以工作,但是如果它在 HEAD 之前呢? git rebase -i HEAD~
我在 flutter 中有以下声明。 weight是来自 _weightController 的文本,即 _weightController.text int.parse(weight).toStri
我是一名优秀的程序员,十分优秀!