将平均值附加到包含字符串和整数的列表

时间:2015-02-02 10:47:22

标签: python python-3.x

我目前有.csv格式的以下文件:

Lee,6,3,4
John,5,6,8
Luke,2,3,8
Terry,4,7,6

以及用于读取文件并将其存储在列表中的以下代码,以便我可以按任何列进行排序。

import sys, csv, operator
from statistics import mean

reader = csv.reader(open("O:\\Class 1.csv"), delimiter=",")
sortedlist = sorted(reader, key=operator.itemgetter(1), reverse=True)
print(sortedlist)

我想要做的是为每个学生添加平均值并将其附加到列表中。它应该是这样的:

Lee,6,3,4,4.3
John,5,6,8,6.3
Luke,2,3,8,4.3
Terry,4,7,6,5.6

最简单的方法是什么?非常感谢先进的任何帮助。

1 个答案:

答案 0 :(得分:0)

使用pandas.DataFrame执行此操作很容易。所有的阅读,排序和附加平均值都可以通过3行代码完成。

df = pandas.read_csv('./xx.csv', header=None)
df.sort(1, ascending=False, inplace=True) # sort by column 1
df['avg'] = df.mean(axis=1)

之后,您可以打印df,它应该是

       0  1  2  3       avg
0    Lee  6  3  4  4.333333
1   John  5  6  8  6.333333
3  Terry  4  7  6  5.666667
2   Luke  2  3  8  4.333333

您可以将其写入新的csv文件。

df.to_csv('./yy.csv', header=False, index=False)

请参阅http://pandas.pydata.org/