Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较不同月份的日期_Python_Python 3.x - Fatal编程技术网

Python 比较不同月份的日期

Python 比较不同月份的日期,python,python-3.x,Python,Python 3.x,我希望得到一些指导,告诉我如何比较不同年份的相同日期。我有1997-2018年3月的每日平均温度数据,我的目标是查看我的时间段内每天的平均温度。我的df很简单,头部和尾部如下所示: IndexType=Datetime Date temp 1997-03-01 6.00 1997-03-02 6.22 1997-03-03 6.03 1997-03-04 4.41 1997-03-05 5.29 Date temp 2018-03-27 -2.44 2018-03-

我希望得到一些指导,告诉我如何比较不同年份的相同日期。我有1997-2018年3月的每日平均温度数据,我的目标是查看我的时间段内每天的平均温度。我的df很简单,头部和尾部如下所示:

IndexType=Datetime

Date temp


1997-03-01  6.00

1997-03-02  6.22

1997-03-03  6.03

1997-03-04  4.41

1997-03-05  5.29


Date temp

2018-03-27 -2.44

2018-03-28 -1.01

2018-03-29 -1.08

2018-03-30 -0.53

2018-03-31 -0.11
我想目标可能是1)以天数为指数,以年份为列的数据框,或2)以天数为指数,以1997-2018年的平均日温度为基准的系列

我的代码:
您可以使用
groupby
查看大量比较。不确定这是否正是你想要的

确保您的日期列是
时间戳

import pandas as pd
df = df.reset_index(drop=False)
df['Date'] = pd.to_datetime(df['Date'])
我将初始化一个数据帧,以便在上面进行练习:

import datetime
import random
base = datetime.datetime.today()
date_list = [base - datetime.timedelta(days=x) for x in range(0, 100000)]
df = pd.DataFrame({'date':date_list, 'temp':[random.randint(-30, 100) for x in range(100000)]})
march = df[df['date'].dt.month == 3]

g = march.groupby(march['date'].dt.day).agg({'temp':['max', 'min', 'mean']})
或者,您可以跨整个数据帧执行此操作,而不仅仅是三月

df.groupby(df['date'].dt.month).agg({'temp':['max', 'min', 'mean', 'nunique']})
     temp                       
      max min       mean nunique
date                            
1     100 -30  34.999765     131
2     100 -30  35.167485     131
3     100 -30  35.660215     131
4     100 -30  34.436264     131
5     100 -30  35.424371     131
6     100 -30  35.086253     131
7     100 -30  35.188133     131
8     100 -30  34.772781     131
9     100 -30  34.839173     131
10    100 -30  35.248528     131
11    100 -30  34.666302     131
12    100 -30  34.575583     131
非常感谢。我通过重置索引、创建两个新列“year”和“date”并创建一个pivot_表解决了这个问题(可能是以一种混乱的方式)。
df.groupby(df['date'].dt.month).agg({'temp':['max', 'min', 'mean', 'nunique']})
     temp                       
      max min       mean nunique
date                            
1     100 -30  34.999765     131
2     100 -30  35.167485     131
3     100 -30  35.660215     131
4     100 -30  34.436264     131
5     100 -30  35.424371     131
6     100 -30  35.086253     131
7     100 -30  35.188133     131
8     100 -30  34.772781     131
9     100 -30  34.839173     131
10    100 -30  35.248528     131
11    100 -30  34.666302     131
12    100 -30  34.575583     131