我有一个很大的csv文件,其中的示例如下(2列多行)
date score
1/1/16 0
2/1/16 0
3/1/16 0.2732
3/1/16 -0.6486
4/1/16 0
5/1/16 0.4404
5/1/16 -0.2732
6/1/16 -0.5859
6/1/16 0.34
您可以看到样本中有多个相同日期的分数不同(与原始文件相同,其中有数百个相同日期的分数)。我想按日期平均分数,然后将其另存为csv格式。预期结果应如下所示(每个日期一个平均分数)
date Avg_Score
1/1/16 0
2/1/16 0
3/1/16 -0.1877
4/1/16 0
5/1/16 0.0836
6/1/16 -0.12295
如何在Python的Pandas模块中做到这一点?我检查了stackoverflow的建议,找到了loc,iloc和groupby。但是我想我不能使它们有用,因为这是我尝试过的,并且仍然得到与原始文件相同的文件(没有任何更改)。不知道为什么它不起作用以及如何使其起作用。
import pandas as pd
import csv
df = pd.read_csv('myfile.csv')
df.groupby('date').mean().reset_index()
df.to_csv('average.csv', encoding='utf-8', index=False)
由于我一直在为此苦苦挣扎,请给予任何帮助。谢谢。
答案 0 :(得分:1)
将groupby
方法的输出分配给变量,例如这里df1
:
df = pd.read_csv('myfile.csv')
#solution with renamed new column
df1 = df.groupby('date')['score'].mean().reset_index(name='Avg_Score')
#your solution
#df1 = df.groupby('date').mean().reset_index()
df1.to_csv('average.csv', encoding='utf-8', index=False)