我需要将数据从一个数据合并到另一个数据。主要数据由具有年份、月份和区域变量的调查答案组成。我需要合并到这上面的数据是那个特定月份的天气数据。这些数据存储在我的第二个气象站的数据框架中,其中有一个年变量,即每个月的平均温度变量(例如。value1,value2,。( value12)和一个区域变量。
我尝试将这两个数据在区域和年份上合并,然后我的计划是选择与调查相吻合的平均温度变量。
df1
---------------------------
year month regions
2002 january Pais Vasco
2002 february Pais Vasco
2003 march Pais Vasco
2002 november Florida
2003 december Florida
... ... ...
---------------------------
df2
-----------------------------------------------
year value1 value2 ... value12 regions
2002 10 11 ... 9 Pais Vasco
2003 11 11 ... 10 Pais Vasco
2004 12 11 ... 10 Pais Vasco
2002 11 11 ... 9 Florida
2003 10 11 ... 9 Florida
-----------------------------------------------因此,在这个例子中,我需要进行我的第一次观测,从Pais地区和2002年获得相应的温度(value1)数据。
当我试图与
df_merged = pd.merge(df1, df2, how = "left", on =["regions", "year"])我得到的数据比我最初的调查数据要多得多。
发布于 2019-08-08 13:41:29
我将这些数据转换为整洁格式。假设value1、value2等对应于value和month,然后使用pd.wide_to_long将其转换为长整洁的格式,然后合并。
tidy = pd.wide_to_long(df, stubnames=['value'], i=['year', 'region'], j='month', sep='') \
.reset_index()你需要规范你的月份,这样它们要么是数字,要么是整数。你是如何做到这一点的,超出了这个答案的范围。
然后,
df1.merge(tidy, on=['year', 'month', 'region'], how='left', validate='1:1')如果这会引发错误,那么您将对同一个['year', 'month', 'region']键进行多个观察。通过丢弃副本来解决这个问题。您如何这样做几乎肯定是基于您的数据。
sobek注意到您的合并命令中有一个错误,即'regions'而不是'region'。确保您所指的是实际存在的列。
https://stackoverflow.com/questions/57413812
复制相似问题