Python 数据帧中日期的平均值

Python 数据帧中日期的平均值,python,pandas,dataframe,datetimeindex,Python,Pandas,Dataframe,Datetimeindex,我有以下数据帧 data = pd.DataFrame({ 'date': ['1988/01/12', '1988/01/13', '1988/01/14', '1989/01/20','1990/01/01'], 'value': [11558522, 12323552, 13770958, 18412280, 13770958] }) python中有没有一种方法可以将一个月的值取平均值,并将其作为该月的新值 i、 e.我想平均1988-01年的值,并将其作为1988-01年的最终值。

我有以下数据帧

data = pd.DataFrame({
'date': ['1988/01/12', '1988/01/13', '1988/01/14', '1989/01/20','1990/01/01'],
'value': [11558522, 12323552, 13770958, 18412280, 13770958]
}) 
python中有没有一种方法可以将一个月的值取平均值,并将其作为该月的新值 i、 e.我想平均1988-01年的值,并将其作为1988-01年的最终值。我试过分组法,但没用

new_df=data.groupby(['date']).mean()

使用由以下人员创建的月份周期:

或使用并在必要时删除缺少的值:

new_df=data.resample('MS', on='date').mean().dropna()
print (new_df)
                   value
date                    
1988-01-01  1.255101e+07
1989-01-01  1.841228e+07
1990-01-01  1.377096e+07
或者,您可以将月份和年份分别用于
多索引

new_df=data.groupby([data['date'].dt.year.rename('y'),
                     data['date'].dt.month.rename('m')]).mean()
print (new_df)

               value
y    m              
1988 1  1.255101e+07
1989 1  1.841228e+07
1990 1  1.377096e+07
df=pd.read_csv(“data.csv”,encoding='ISO-8859-1',parse_dates='[“datetime”]) 打印(df) 打印(df.dtypes)

01987-11-0107:00:0021.4 1 1987-11-01 13:00:00 27.4 2 1987-11-01 19:00:00 25.0 3 1987-11-02 07:00:00 22.0 4 1987-11-02 13:00:00 27.6 ... ... 27554 2020-03-30 13:00:00 24.8 27555 2020-03-30 18:00:00 23.8 27556 2020-03-31 07:00:00 23.4 27557 2020-03-31 13:00:00 24.6 275582020-03-3118:00:0026.4

df1=df.groupby(pd.Grouper(key='datetime',freq='D')).mean()

日期时间温度
1987-11-01 24.600000 1987-11-02 25.066667 1987-11-03 24.466667 1987-11-04 22.533333 1987-11-05 25.066667 ... 2020-03-27 26.533333 2020-03-28 27.666667 2020-03-29 27.733333 2020-03-30 24.266667
2020-03-31 24.800000

出于某种原因,这对样本数据非常有效,但对于我的实际数据集,它将值打印为0。它正确地打印出日期,但整个过程的值都是0dataset@Tamarie-第一个想法是检查数据是否为数字,如果是,则很难回答。是,它是数字。我运行了data.d类型我得到了datetime64和float64@Tamarie-所有3个解决方案均失败?所有3个解决方案均有效-它们只是不打印值(全部为空)。但是我可以看到,它每个月有1个值,你是对的;groupBy在字符串方面失败,而对datetime的解析解决了这一问题。解释一下这可能会让它不那么神秘。你是对的Jim Meyer,第一件事是传递默认作为对象出现的日期和时间。如果未执行此操作,则返回错误。而pandas.Grouper函数允许指定groupby语句(datetime&frec D)data=pd.read_csv(“TTPM_POTOSI2.csv”,encoding='ISO-8859-1',parse_dates=[“datetime”])datetime temperature 0 1987-11-01 07:00 21.4 1 1987-11-01 13:00 27.4 2 1987-11-01 19:00 25.0 df1=data.groupby(pd.Grouper平均值()日期时间温度1987-11-01 24.600000 1987-11-02 25.066667
new_df=data.groupby([data['date'].dt.year.rename('y'),
                     data['date'].dt.month.rename('m')]).mean()
print (new_df)

               value
y    m              
1988 1  1.255101e+07
1989 1  1.841228e+07
1990 1  1.377096e+07
             datetime   Temperature