我有两个数据帧,一个叫Clim
,一个叫O3_mda8_3135
。
Clim.head(12)
Out[7]:
avgT_2551 avgT_5330 ... avgNOx_3135(ppb) avgCO_3135(ppm)
Month ...
1 14.924181 13.545691 ... 48.216128 0.778939
2 16.352172 15.415385 ... 36.110385 0.605629
3 20.530879 19.684720 ... 20.974544 0.460571
4 23.738576 22.919158 ... 14.270995 0.432855
5 26.961927 25.779007 ... 11.087005 0.334505
6 32.208322 31.225072 ... 12.801409 0.384325
7 35.280124 34.265880 ... 10.732970 0.321284
8 35.428857 34.433351 ... 11.916420 0.326389
9 32.008317 30.856782 ... 15.236616 0.343405
10 25.691444 24.139874 ... 24.829518 0.467317
11 19.310550 17.827946 ... 36.339847 0.621938
12 14.186050 12.860077 ... 49.173287 0.720708
[12 rows x 20 columns]
我还有数据框O3_mda8_3135
,它是通过首先计算每个成分的滚动8小时平均值,然后找到臭氧的最大日值来创建的,这就是为什么所有的时间戳和指数都不同的原因。一年中的每一天,每个气象参数都有一个值。以下是这个数据框的示例:
O3_mda8_3135
Out[9]:
date Temp_C_2551 ... CO_3135(ppm) O3_mda8_3135
12 2018-01-01 12:00:00 24.1 ... 0.294 10.4000
36 2018-01-02 12:00:00 26.3 ... 0.202 9.4375
60 2018-01-03 12:00:00 22.8 ... 0.184 7.1625
84 2018-01-04 12:00:00 25.6 ... 0.078 8.2500
109 2018-01-05 13:00:00 27.3 ... NaN 9.4500
... ... ... ... ...
8653 2018-12-27 13:00:00 19.6 ... 0.115 35.1125
8676 2018-12-28 12:00:00 14.9 ... 0.097 39.4500
8700 2018-12-29 12:00:00 13.9 ... 0.092 38.1250
8724 2018-12-30 12:00:00 17.4 ... 0.186 35.1375
8753 2018-12-31 17:00:00 8.3 ... 0.110 30.8875
[365 rows x 24 columns]
我想知道如何从O3_mda8_3135
中相应的列和行中减去Clim
中的平均值。例如,我想从1月份的另一个数据框O3_mda8_3135
,列名Temp_C_2551
中的站点2551的温度平均值减去1月份的平均值。
avgT_2551
对应于其他数据框中的Temp_C_2551
有没有简单的方法可以做到这一点?我应该从日期时间中提取月份并将其放入O3_mda8_3135
数据框的另一列中吗?我仍然是初学者,希望得到任何建议或提示。
我看到这篇文章如何从那个月的每一天减去一个月的平均值?但是没有足够的信息让我理解正在执行的操作。
多亏了Stack Overflow的帖子,我自己想通了:)
我在两个数据框中创建了与月份相对应的新列。我最初使用Clim=Clim将
中的索引设置为Month。set_index('Month')所以我删除了该行。然后,我在O3_mda8_3135
数据框中为Month创建了一列。之后,我根据'Month'列合并了两个数据框,然后使用pd. sub函数减去我想要的列。
这是一些示例代码,抱歉变量太长了,但这个数据框很大。
O3_mda8_3135['Month'] = O3_mda8_3135['date'].dt.month
O3_mda8_3135_anom = pd.merge(O3_mda8_3135, Clim, how='left', on=('Month'))
O3_mda8_3135_anom['O3_mda8_3135_anom'] = O3_mda8_3135_anom['O3_mda8_3135'].sub(O3_mda8_3135_anom['MDA8_3135'])
这些帖子帮助我回答了我的问题:
>
python熊猫从datetime中提取年份:df['年']=df['日期']。年不起作用
如何计算时间的月平均值查看数据并用每年该月的值减去月平均值?
使用熊猫查找2列空值之间的差异