根据月份和位置合并两个数据集

问题描述

我有两个数据集,分别由叶绿素浓度的月度气候(chla,1970年至2020年)和二氧化碳的逸度(fco2y,2002年至2020年)组成。其中一个数据集具有年份值,而另一个数据集仅具有月份值。有什么办法可以使用python仅基于location和month属性合并数据。我需要汇总数据以适应回归模型。

数据集1

+--------+-----------+------------+-------+
|  lat   |    lon    |  chlor_a   | month |
+--------+-----------+------------+-------+
| 78.375 | 23.125006 |  2.1265152 |     1 |
| 78.375 |  23.20834 |  2.1265152 |     2 |
| 78.375 | 23.291674 |  2.1265152 |     2 |
| 78.375 |  24.95834 | 0.31348512 |     1 |
| 78.375 | 25.041674 | 0.31348512 |     3 |
+--------+-----------+------------+-------+

数据集2

+----------+------+-------+--------------------+--+
|   DATE   |  LAT |  LON  |  FCO2_AVE_WEIGHTED |  |
+----------+------+-------+--------------------+--+
| 15-02-70 |  9.5 | 156.5 |            303.672 |  |
| 15-02-70 |  9.5 | 157.5 |            311.013 |  |
| 15-02-70 |  9.5 | 158.5 |            321.322 |  |
| 15-02-70 | 10.5 | 155.5 |            305.066 |  |
+----------+------+-------+--------------------+--+

解决方法

如果日期列采用日期时间格式,则将其转换为字符串数据类型,并用'-'进行拆分,这样您将从表2中获得月份。 之后,使用df1.merge(df2,left_on = [df1列名称],right_on = [df2列名称])合并两个数据框

,

正如Mohd已经提到的那样,您基本上可以通过两个熊猫标准函数来实现此目的。我刚刚为您的问题快速编码了一个现成的解决方案。请查看并阅读熊猫文档以获取更多信息。

import pandas as pd

df1 = pd.DataFrame([[78.375,23.125006,2.1265152,1],[78.375,23.20834,2],23.291674,24.95834,0.31348512,25.041674,3]],columns=['lat','lon','chlor_a','month'])

df2 = pd.DataFrame([['15-02-70',9.5,156.5,303.672],['15-02-70',157.5,311.013],158.5,321.322],10.5,155.5,305.066]],columns=['DATE','LAT','LON','FCO2_AVE_WEIGHTED'])

df2['DATE'] = pd.to_datetime(df2['DATE'])
df2['month'] = pd.DatetimeIndex(df2['DATE']).month
df2 = df2.rename(str.lower,axis='columns')
df2 = df2.merge(df1,on=['lat','month'],how='outer')
print(df2)

我希望它能对您有所帮助。熊猫确实是一个功能强大的库,可以轻松实现所需的功能。