使用MultiIndex创建如下DataFrame多级索引: 然后通过转置、stack()方法得到以下数据: 最后通过取值和切片得到目标数据: 具体要求请参见后续测试样例。
时间: 2024-09-27 09:14:19 浏览: 61
在Pandas中,MultiIndex,也称为“多层索引”或“笛卡尔积索引”,允许创建包含多个列级别的索引。首先,你需要创建一个包含两个或更多级别标签的数据框。例如:
```python
import pandas as pd
# 创建数据
data = {
'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8],
'D': [10, 20, 30, 40, 50, 60, 70, 80]
}
# 创建 MultiIndex DataFrame
index = pd.MultiIndex.from_tuples(zip(data['A'], data['B']))
df = pd.DataFrame(data.values, index=index, columns=['C', 'D'])
```
然后,你可以使用`T`或`.transpose()`方法将DataFrame转置,使得索引成为行标签,而列变为新的水平索引:
```python
transposed_df = df.T
```
接着,通过`stack()`方法,可以将多层索引扁平化成单层索引,同时将原来列数据变成新的行数据:
```python
flattened_df = transposed_df.stack()
```
最后,你可以通过指定特定的索引值或切片来获取所需的数据。比如,如果你想要选取'A=foo'并且'B=one'的行,可以这样做:
```python
target_data = flattened_df.loc[('foo', 'one')]
```
阅读全文