python - 对制表符分隔的文件执行计算

标签 python arrays csv

我仍在学习 Python,但我仍然不知道如何使用数组。

我想读取一个制表符分隔的文件,例如(但在我的例子中,我将有大约 400 行):

  Col1      Col2
  0.0001    0.6
  0.0001    0.5
  0.000006  0.8
  0.0001    0.0003
  0.002     1
  0.002     3

我想得到以下输出:

Col1      Col2
0.0001    0.36676667
0.000006  0.8
0.002     2

所以我想在Col1中保持相同的值,但取Col2中值的平均值,该平均值对应于Col1中的相同值。

我可以使用以下方式读取数组:

  arr = np.genfromtxt('test.csv', dtype=None, delimiter='\t', skiprows=1)

但我不知道如何进行这些操作并使用新生成的数据创建一个新文件。

非常感谢您的帮助!

最佳答案

使用collections.defaultdictlist 作为默认参数。

将第一列中的值作为键,并附加第二个值。

import csv
from collections import defaultdict

# Gather the data from the CSV file
d = defaultdict(list)
with open('data.csv', 'r') as csvfile:
    reader = csv.reader(csvfile, delimiter='\t')
    for row in reader:
        d[float(row[0])].append(float(row[1]))

# Print the mean.
for k in d.keys():
    print k, sum(d[k])/len(d[k])

关于python - 对制表符分隔的文件执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17820699/

相关文章:

python:对csv文件中的坐标进行排序

java - 如何有效地随机重新插入数组中的元素

PHP 比较两个 CSV 文件并突出显示差异

javascript - 如何自动向数组添加字段?

sql - 将 CSV 文件导入 SQL Server

mysql 1452 在使用插入表时

python - 根据元组的总和获取元组元素的乘积

python - 从 selenium 控制的 chrome 浏览器读取 stdout 和 stderr 日志

python - 100万用户的系统,如何用Python做定时任务?

c++ - 为什么不能使用 '=' 运算符将数组变量直接分配给另一个数组变量?