来自书中的以下数据框 Python Data Science Handbook , 我正在尝试列出
import pandas as pd
import numpy as np
index = pd.MultiIndex.from_product([[2013, 2014], [1, 2]], names=['year', 'visit'])
columns = pd.MultiIndex.from_product([['Bob', 'Guido', 'Sue'], ['HR', 'Temp']], names=['subject', 'type'])
# mock some data
data = np.round(np.random.randn(4, 6), 1)
data[:, ::2] *= 10
data += 37
# create the DataFrame
health_data = pd.DataFrame(data, index=index, columns=columns)
我可以访问不同的行和列:
print( health_data['Guido'])
type HR Temp
year visit
2013 1 32.0 36.4
2 47.0 37.8
2014 1 38.0 36.0
2 47.0 37.2
print(health_data)
subject Bob Guido Sue
type HR Temp HR Temp HR Temp
year visit
2013 1 26.0 35.6 44.0 36.8 32.0 37.0
2 34.0 34.9 44.0 37.2 46.0 35.5
2014 1 46.0 36.8 45.0 37.9 26.0 37.3
2 41.0 37.4 30.0 37.1 23.0 37.4
print(health_data.index)
MultiIndex(levels=[[2013, 2014], [1, 2]],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
names=['year', 'visit'])
print(health_data.loc[2013])
subject Bob Guido Sue
type HR Temp HR Temp HR Temp
visit
1 26.0 35.6 44.0 36.8 32.0 37.0
2 34.0 34.9 44.0 37.2 46.0 35.5
print(health_data.loc[2013, 1])
subject type
Bob HR 26.0
Temp 35.6
Guido HR 44.0
Temp 36.8
Sue HR 32.0
Temp 37.0
Name: (2013, 1), dtype: float64
但是,我无法通过访问来显示数据框,即
health_data[:, 1]
自从我收到此错误
TypeError: '(slice(None, None, None), 1)' is an invalid key
我该怎么做?
最佳答案
对于多索引,xs
是一个有用的定位器:
health_data.xs(1, level='visit')
这将返回数据帧的 View ,其中 visit
为 1
:
subject Bob Guido Sue
type HR Temp HR Temp HR Temp
year
2013 25.0 37.2 35.0 37.7 21.0 37.8
2014 31.0 35.3 42.0 37.9 38.0 37.2
如果您仍希望显示visit
,请使用drop_level=False
:
health_data.xs(1, level='visit', drop_level=False)
subject Bob Guido Sue
type HR Temp HR Temp HR Temp
year visit
2013 1 25.0 37.2 35.0 37.7 21.0 37.8
2014 1 31.0 35.3 42.0 37.9 38.0 37.2
关于python - 从多个索引 Pandas 的 DataFrame 访问值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50593281/