我有这样一个多索引数据帧:
import pandas as pd
import numpy as np
lat = [10.1,16.5,35.8,40.6,80.7,60.1]
long = [11.3,19.4,33.6,43.8,65.2,60.1]
years = list(range(2000,2010,1))
months = list(range(1,13,1))
variables = ['S','L','A','W']
miindex = pd.MultiIndex.from_product([zip(lat,long),years, months])
micolumns = pd.MultiIndex.from_tuples(variables)
dfmi = pd.DataFrame(np.arange(len(miindex) * len(micolumns)).reshape((len(miindex),\
len(micolumns))),index=miindex, \
columns=micolumns). \
sort_index().sort_index(axis=0)
#In [10]: dfmi
#Out[10]:
# S L A W
#(10.1, 11.3) 2000 1 0 1 2 3
# 2 4 5 6 7
# 3 8 9 10 11
# 4 12 13 14 15
# 5 16 17 18 19
# 6 20 21 22 23
# 7 24 25 26 27
# 8 28 29 30 31
# 9 32 33 34 35
# 10 36 37 38 39
# 11 40 41 42 43
# 12 44 45 46 47
# 2001 1 48 49 50 51
# 2 52 53 54 55
# 3 56 57 58 59
我可以像这样根据年或月来对数据集进行切片
summer_data = dfmi.loc[(slice(None),slice(None),slice(6,8)),:]
#In[11]: summer_data
#Out[11]:
# S L A W
#(10.1, 11.3) 2000 6 20 21 22 23
# 7 24 25 26 27
# 8 28 29 30 31
# 2001 6 68 69 70 71
# 7 72 73 74 75
# 8 76 77 78 79
# 2002 6 116 117 118 119
# 7 120 121 122 123
我想根据纬度值(比如大于30)对这个数据集进行切片。我浏览了熊猫多索引/高级索引文档,但没有发现任何东西有帮助。是吗我有什么办法可以做到这一点?你知道吗
一般来说,在多索引中使用元组并不是一个好主意。多重索引本身就是一个元组,您将遇到麻烦。但是为什么要把
lat
和long
结合起来呢?如果你使用你可以这样写:
或者
Here您可以找到一个非常好的关于切片多索引的概述。你知道吗
相关问题 更多 >
编程相关推荐