Python:CSV文件中基于另一列

时间:2017-10-10 14:26:53

标签: python python-3.x pandas csv

我是菜鸟,我有一个大型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 中的新平均值控制为小数,只输出到百分之一。感谢

1 个答案:

答案 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')