pandas 数据帧的多索引
MultiIndex for pandas dataframe
我有这个代码:
new_dict = {'x':[1,2,3,4,5], 'y':[11,22,33,44,55], 'val':[100, 200, 300, 400, 500]}
df = pd.DataFrame.from_dict(new_dict)
val x y
0 100 1 11
1 200 2 22
2 300 3 33
3 400 4 44
4 500 5 55
我希望能够结合使用 x
和 y
的值作为 val
的索引,
例如
df[3][33]
300
实现此目标的最佳方法是什么?我知道这一定与多索引有关,但我不确定具体如何。
您可以定义一个函数:
new_dict = {'x':[1,2,3,4,5], 'y':[11,22,33,44,55], 'val':[100, 200, 300, 400, 500]}
df = pd.DataFrame.from_dict(new_dict)
def multindex(x,y):
return df.set_index(['x','y']).loc[x,y]
multindex(1,11) #will return '100'
您可以将 2 个布尔条件定义为掩码并与 .loc
:
一起使用
df.loc[(df['x']==3) & (df['y']==33), 'val']
否则只需设置索引,然后您就可以使用这些值对 df 进行索引:
In [233]:
df = df.set_index(['x','y'])
df.loc[3,33]
Out[233]:
val 300
Name: (3, 33), dtype: int64
您可以很容易地将第一个版本包装到一个函数中
我有这个代码:
new_dict = {'x':[1,2,3,4,5], 'y':[11,22,33,44,55], 'val':[100, 200, 300, 400, 500]}
df = pd.DataFrame.from_dict(new_dict)
val x y
0 100 1 11
1 200 2 22
2 300 3 33
3 400 4 44
4 500 5 55
我希望能够结合使用 x
和 y
的值作为 val
的索引,
例如
df[3][33]
300
实现此目标的最佳方法是什么?我知道这一定与多索引有关,但我不确定具体如何。
您可以定义一个函数:
new_dict = {'x':[1,2,3,4,5], 'y':[11,22,33,44,55], 'val':[100, 200, 300, 400, 500]}
df = pd.DataFrame.from_dict(new_dict)
def multindex(x,y):
return df.set_index(['x','y']).loc[x,y]
multindex(1,11) #will return '100'
您可以将 2 个布尔条件定义为掩码并与 .loc
:
df.loc[(df['x']==3) & (df['y']==33), 'val']
否则只需设置索引,然后您就可以使用这些值对 df 进行索引:
In [233]:
df = df.set_index(['x','y'])
df.loc[3,33]
Out[233]:
val 300
Name: (3, 33), dtype: int64
您可以很容易地将第一个版本包装到一个函数中