Python:基于另一列值的 CSV 文件中的平均值

标签 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 是每个 State 的平均值,如下所示:

State  daydiff
CT     6.083
NY     3.2125
PA     5.886

我尝试了多种方法,最干净的似乎是利用 pandas 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

我还希望将 datediff 中的新平均值控制为小数,仅精确到百分之一。谢谢

最佳答案

计数器的“问题”是因为 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')

关于Python:基于另一列值的 CSV 文件中的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46669264/

相关文章:

python - 当特定列中单元格的值相同时,如何合并 pandas Dataframes 中的行

python - 多语言文本语料库的词干提取

python - 如何根据句号 '.' 在 python 中中断一个句子?

python - c9.io错误: You don't have permission to access that port

python-3.x - 如何从 AWS Lambda 运行 Scrapy 蜘蛛?

python - PyAudio 回调仅被调用一次

python - Scrapy中的爬行顺序

Python:通用/模板化 getter

python - 当使用 pandas 规范化 json 时,为什么到达嵌套元会给出 NaN ?

python - 使用 flutter 创建股票的蜡烛图