我有两个数据集,包括叶绿素浓度(chl a,yr 1970 - 2020)和二氧化碳逸度(fco2y,yr 2002 - 2020)的月度气候。其中一个数据集具有year值,但另一个数据集仅具有month值。有没有办法使用python只根据位置和月份属性来合并数据?我需要聚合数据以符合回归模型。
数据集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 | |
+----------+------+-------+--------------------+--+发布于 2020-08-12 22:08:59
如果date列是datetime格式,则将其转换为字符串数据类型,并将其拆分为'-‘,这样,在使用df1.merge(df2,left_on=df1列名,right_on=df2列名)合并两个数据帧之后,您将获得表2中的month。
发布于 2020-08-12 23:18:50
正如Mohd已经提到的,你基本上可以通过两个pandas标准函数来实现这一点。我只是快速地为你的问题编写了一个现成的解决方案。请看一看pandas文档,了解更多信息。
import pandas as pd
df1 = pd.DataFrame([[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]],columns=['lat','lon','chlor_a','month'])
df2 = pd.DataFrame([['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]],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','lon','month'],how='outer')
print(df2)我希望它能对你有所帮助。Pandas确实是一个强大的库,它可以很容易地实现所需的功能。
https://stackoverflow.com/questions/63377459
复制相似问题