我有两个具有多级索引r1和r2的数据帧,这样
a1=['iso3_o', 'iso3_d', 'year', 'ExportFoodAndLiveAnimals']
a=np.array([['CAN', 'USA', '1995.0', '5918210.506'],
['CAN', 'USA', '1996.0', '6988508.727'],
['CAN', 'USA', '1997.0', '7792977.258'],
['CAN', 'USA', '1998.0', '8177456.631'],
['CAN', 'USA', '1999.0', '8773990.755'],
['CAN', 'USA', '2000.0', '9650783.071'],
['CAN', 'USA', '2001.0', '10800432.88'],
['CAN', 'USA', '2002.0', '11348837.38'],
['CAN', 'USA', '2003.0', '11313334.46'],
['CAN', 'USA', '2004.0', '12337588.35'],
['CAN', 'USA', '2005.0', '13227226.96'],
['CAN', 'USA', '2006.0', '14236699.34'],
['CAN', 'USA', '2007.0', '15638919.3'],
['CAN', 'USA', '2008.0', '17449901.08'],
['CAN', 'USA', '2009.0', '14813089.89'],
['CAN', 'USA', '2010.0', '16399733.82']])
r1 = pd.DataFrame(a, columns=a1)
r1
r2定义为
^{pr2}$然后我决定加入他们的多索引级别
因此,我所做的是将列重置为索引
multi_r2 = r2.set_index(['iso3_o', 'iso3_d','year'])
multi_r1 = r1.set_index(['iso3_o', 'iso3_d','year'])
df = multi_r2.join(multi_r1)
当我在“iso3”“o”,“iso3”“d”,“year”上加入时,数据帧df给了我一个NAN
为什么会这样?在
提前谢谢你
我的问题看起来很简单,但我想我想和你分享一下。基本上正如EdChum指出的那样,我必须改变年份的数据类型,我已经完成了一系列步骤。也许有一个更简单的方法,但我不知道如果你是请分享。在
提取值并将它们保存在numpy数组中
为year变量创建一个数字,并将其与新数组连接起来
^{pr2}$提取前一个数组r1的列,并重新对该数组进行采样,使年份在最末尾
将数据帧r1重新创建为
然后按我之前做的步骤做
这对我来说很好
r1
和r2
中的year
列都是str
,但不一样,将其更改为int即可相关问题 更多 >
编程相关推荐