我是菜鸟,我有一个大型CSV文件,其数据结构如下(有更多列):
State daydiff
CT 5.5
CT 6.5
CT 6.25
NY 3.2
NY 3.225
PA 7.522
PA 4.25
我想输出一个新的CSV,其中每个daydiff
的{{1}}是平均值,如下所示:
State
我尝试了很多方法,最干净的似乎是利用pandas State daydiff
CT 6.083
NY 3.2125
PA 5.886
但是当我运行下面的代码时:
groupby
我得到的文件与原始文件相同,但在第一列中添加了一个没有标题的计数器:
import pandas as pd
df = pd.read_csv('C:...input.csv')
df.groupby('State')['daydiff'].mean()
df.to_csv('C:...AverageOutput.csv')
我也希望将,State,daydiff
0,CT,5.5
1,CT,6.5
2,CT,6.25
3,NY,3.2
4,NY,3.225
5,PA,7.522
6,PA,4.25
中的新平均值控制为小数,只输出到百分之一。感谢
答案 0 :(得分:1)
"问题"使用计数器是因为to_csv
的默认行为是写入索引。你应该df.to_csv('C:...AverageOutput.csv', index=False)
。
您可以通过将daydiff转换为字符串来控制它的输出格式。 df.daydiff = df.daydiff.apply(lambda x: '{:.2f}'.format(x))
您的完整代码应为:
df = pd.read_csv('C:...input.csv')
df2 = df.groupby('State')['daydiff'].mean().apply(lambda x: '{:.2f}'.format(x))
df2.to_csv('C:...AverageOutput.csv')