我有一个多索引的数据帧看起来,这只是部分。年份从2007年到2015年,每年的位置相同。在
Jan Feb Mar Apr May June July Aug Sept Oct \
Year Place
2007 Johore 1.26 1.07 1.21 1.27 1.33 1.28 1.67 1.88 1.89 1.86
Kedah 1.20 1.27 1.50 1.38 1.38 1.52 1.84 2.09 2.08 2.02
Kelantan 0.92 0.90 1.01 1.10 1.07 0.87 0.93 1.02 1.08 1.17
Malacca 1.62 1.45 1.64 1.52 1.50 1.40 1.75 1.80 2.03 2.14
N. Sembilan 0.98 0.94 1.11 1.07 1.10 1.16 1.46 1.58 1.61 1.71
Nov Dec
Year Place
2007 Johore 1.95 1.72
Kedah 1.79 1.39
Kelantan 1.29 0.97
Malacca 2.44 2.13
N. Sembilan 1.75 1.58
我想旋转数据,得到一个索引数据帧,索引是月份(例如2007年1月、2007年2月),列是不同的位置。在
我试着以“彭亨”为例:
^{pr2}$我得到了我想要的彭亨专栏。与其一次只在一个地方做,我想知道是否有一种方法可以更快地遍历所有地方。 谢谢!在
我的思路与@HappyLeapSecond大致相同,但我会加上这一点,因为它并不完全相同,而且更通用(对于所有行,而不仅仅是某一行)。在
首先,我将使用一个稍微不同的示例数据集。还请注意,我发布没有多索引,因为单级索引更容易复制和粘贴到pandas中。在
然后,设置索引,使其与问题中的索引具有可比性:
^{pr2}$数据中存在的主要“问题”是,从行轴开始,而月份从列轴开始。因此,您需要做的是将年份索引从行移到列。用
unstack(level='year')
就可以了。剩下的基本上都是清理的问题。在编辑添加:使用@JianxunLi的解决方案可以简化最后一行。在
这是解决将年/月放在同一个指数上而将其放在相反的指数上的更好的方法,但我将把这个答案暂时留在这里,以防看到其他方法和解释是有帮助的。在
不用} :
unstack
交换索引级别,可以使用^{还有一个^{} 方法,如果您的多重索引有很多级别并且需要执行多个交换,那么这个方法非常有用。在
您可以对所有
Places
进行整形,然后只选择其中一个。在相关问题 更多 >
编程相关推荐