【问题标题】:Python - data.to_csv output formatPython - data.to_csv 输出格式
【发布时间】:2018-06-04 11:34:30
【问题描述】:

来自具有以下格式的 csv 文件:

Date,Data
01-01-01,111
02-02-02,222
03-03-03,333

我正在使用以下代码计算每月平均值:

data = pd.read_csv("input.csv")
data['Month'] = pd.DatetimeIndex(data.reset_index()['Date']).month
mean_data = data.groupby('Month').mean()

然后我使用以下命令输出一个 csv 文件:

mean_data.to_csv("test.csv")

它工作正常并给我以下输出:

Month,Data
01,01
02,02
03,03
04,04
...

但现在我想知道每月平均计算中包含了多少数据。为此我改变了:

mean_data = data.groupby('Month').mean()

作者:

mean_data = data.groupby(['Month']).agg(['mean', 'count'])

但问题来了。当我想输出 csv 时,我现在有一个奇怪的格式如下:

      Data,Data,
      mean,count,
Month,
01,     01,8,
02,     02,9,
03,     03,7,
04,     04,5,

这不是很方便。相反,我希望得到以下输出:

Month,Mean,Count
01,01,8
02,02,9
03,03,7
04,04,5

有人知道如何实现吗?

【问题讨论】:

  • 请编辑您的示例以便重现。 Month,Data=01,01 看起来不像正确的输出值。
  • 啊,你只关心列名标题:Month, Data mean, Data count...
  • @smci - 这个空格和两行标题实际上让我很担心,当我想在以后重新读取数据时,这不是很方便。
  • 好的,但重点是标题具有误导性,这与to_csv 无关,更多的是关于pandas 为聚合提供了多个函数的恼人默认列名,至少您的代码不是jezrael 的。建议您编辑标题以更准确。

标签: python pandas csv aggregate columnname


【解决方案1】:

groupby之后需要指定列:

#convert first column to datetime
data = pd.read_csv("input.csv", parse_dates=[0])

df['Month'] = df['Date'].dt.month
mean_data = data.groupby('Month')['Data'].agg(['mean', 'count'])

应该简化:

mean_data = data.groupby(df['Date'].dt.month)['Data'].agg(['mean', 'count'])

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2014-01-29
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多