【问题标题】:Formatting columns in a pandas dataframe Python格式化熊猫数据框Python中的列
【发布时间】:2021-10-04 15:48:44
【问题描述】:

下面的代码将mean,median,max,min 获取为pandas 表。我只想打印没有日期的表格的Average 部分。我怎样才能做到这一点并获得预期的输出?

import numpy as np
import pandas as pd
from pandas import DataFrame

date_list = ['2019-09-01 00:00:00', '2019-10-01 00:00:00', '2019-11-01 00:00:00',
 '2019-12-01 00:00:00', '2020-01-01 00:00:00', '2020-02-01 00:00:00', 
 '2020-03-01 00:00:00', '2020-04-01 00:00:00', '2020-05-01 00:00:00', 
 '2020-06-01 00:00:00', '2020-07-01 00:00:00', '2020-08-01 00:00:00',
 '2020-09-01 00:00:00','2020-10-01 00:00:00', '2020-11-01 00:00:00', 
 '2020-12-01 00:00:00','2021-01-01 00:00:00','2021-02-01 00:00:00', '2021-03-01 00:00:00', 
 '2021-04-01 00:00:00','2021-05-01 00:00:00', '2021-06-01 00:00:00', 
 '2021-07-01 00:00:00']
monthly_values = np.array([ 15., 39.6, 0.2, 34.3, 19.6, 26.8, 15.7, 26., 12.6, 15.5, 18.6, 2.3, 6.5,
   2.5, 12.2, 11.6, 93.9, 25.5, 26.5, -16.5, -1.4, -1.8, 5.])

data = pd.DataFrame({"Date": date_list, "Averages": monthly_values})
data["Date"] = pd.to_datetime(data["Date"])
out=(data.groupby(data["Date"].dt.year)
     .agg(['mean','median','max','min'])
     .droplevel(0,1)
     .rename(columns=lambda x:'Average' if x=='mean' else x.title()))
print(out['Average'])

输出:

Date
2019    22.275000
2020    14.158333
2021    18.742857

预期输出:

22.275000
14.158333
18.742857

【问题讨论】:

    标签: python pandas dataframe datetime format


    【解决方案1】:

    您有两列名为“Average”,因此print(out["Average"]) 会打印这两列。只打印第二个的值:

    print(*out["Average"].iloc[:, 1], sep="\n")
    

    打印:

    22.275
    14.158333333333333
    18.742857142857144
    

    【讨论】:

    • 它给了我一个错误IndexingError: Too many indexers
    • @georgehere 我使用了您在问题中的脚本。你能发布给你这个错误的数据吗?
    • 你好,很抱歉延迟回复我也在使用同样的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2020-08-03
    • 1970-01-01
    • 2016-07-27
    相关资源
    最近更新 更多