python - 比较不同月份的日期
问题描述
我希望得到一些指导,我可以如何比较不同年份的相同日期。我有 1997 年至 2018 年所有 3 月的每日平均温度数据,我的目标是查看我的时间段内每天的平均温度。我的 df 很简单,头部和尾部如下所示:
索引类型 = 日期时间
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 年平均每日温度的系列。
我的代码:
df = pd.read_csv(file, sep=';', skiprows=9, usecols=[0, 1, 2, 3], parse_dates=[['Datum', 'Tid (UTC)']], index_col=0)
print(df.head())
df.columns = ['temp']
df.index.names = ['Date']
df_mar = df.loc[df.index.month == 3]
df_mar = df_mar.resample('D').mean().round(2)
解决方案
您可以使用groupby
查看很多比较。不确定这是否正是您要寻找的?
确保您的日期列是Timestamp
.
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
推荐阅读
- ruby-on-rails-5 - Rails - 执行 POST 方法时不允许使用方法(错误 405)
- node.js - React+Node Express,下载的 docx 文件损坏
- excel - 调用的 Excel VBA 对象已与其客户端断开连接
- bash - 使用服务帐户进行身份验证时是否可以避免显式设置 project_id?
- azure - 用于结构化数据的 Azure 数据湖
- angular - 在 html 中调用方法的 Angular 2 性能问题
- firebase - 服务器从 GCM 迁移到 FCM
- google-cloud-platform - Google Cloud Identity Platform (CICP) SAML 工作流失败
- postgresql - 如何将非唯一值添加到唯一列表中,同时仍允许值可更新
- bash - iTerm:在 SSH 会话中设置标记