## 七、问题与练习
### 1. 问题
#### 【问题一】 如何更改列或行的顺序?如何交换奇偶行(列)的顺序?
#### 【问题二】 如果要选出DataFrame的某个子集,请给出尽可能多的方法实现。
#### 【问题三】 query函数比其他索引方法的速度更慢吗?在什么场合使用什么索引最高效?
#### 【问题四】 单级索引能使用Slice对象吗?能的话怎么使用,请给出一个例子。
#### 【问题五】 如何快速找出某一列的缺失值所在索引?
#### 【问题六】 索引设定中的所有方法分别适用于哪些场合?怎么直接把某个DataFrame的索引换成任意给定同长度的索引?
#### 【问题七】 多级索引有什么适用场合?
#### 【问题八】 什么时候需要重复元素处理?
```python
import numpy as np
import pandas as pd
df = pd.read_csv('data/table.csv',index_col='ID').sort_index()
df.head()
```
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>School</th>
<th>Class</th>
<th>Gender</th>
<th>Address</th>
<th>Height</th>
<th>Weight</th>
<th>Math</th>
<th>Physics</th>
</tr>
<tr>
<th>ID</th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<th>1101</th>
<td>S_1</td>
<td>C_1</td>
<td>M</td>
<td>street_1</td>
<td>173</td>
<td>63</td>
<td>34.0</td>
<td>A+</td>
</tr>
<tr>
<th>1102</th>
<td>S_1</td>
<td>C_1</td>
<td>F</td>
<td>street_2</td>
<td>192</td>
<td>73</td>
<td>32.5</td>
<td>B+</td>
</tr>
<tr>
<th>1103</th>
<td>S_1</td>
<td>C_1</td>
<td>M</td>
<td>street_2</td>
<td>186</td>
<td>82</td>
<td>87.2</td>
<td>B+</td>
</tr>
<tr>
<th>1104</th>
<td>S_1</td>
<td>C_1</td>
<td>F</td>
<td>street_2</td>
<td>167</td>
<td>81</td>
<td>80.4</td>
<td>B-</td>
</tr>
<tr>
<th>1105</th>
<td>S_1</td>
<td>C_1</td>
<td>F</td>
<td>street_4</td>
<td>159</td>
<td>64</td>
<td>84.8</td>
<td>B+</td>
</tr>
</tbody>
</table>
</div>
```python
#【问题一】 如何更改列或行的顺序?如何交换奇偶行(列)的顺序?
#提出index和columns
idxlist = (df.index.values)
collist = (df.columns.values)
#调整index和columns位置
i = 0;j = 3
idxlist[i],idxlist[j] = idxlist[j],idxlist[i]
collist = collist[0::2]
#使用df.reindex()。修改原始df的。
df.reindex(index = idxlist, columns = collist).head()
```
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>School</th>
<th>Gender</th>
<th>Height</th>
<th>Math</th>
</tr>
<tr>
<th>ID</th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<th>1104</th>
<td>S_1</td>
<td>M</td>
<td>173</td>
<td>34.0</td>
</tr>
<tr>
<th>1102</th>
<td>S_1</td>
<td>F</td>
<td>192</td>
<td>32.5</td>
</tr>
<tr>
<th>1103</th>
<td>S_1</td>
<td>M</td>
<td>186</td>