df 创建多级的列
时间: 2023-12-13 21:11:25 浏览: 34
你可以使用 pandas 中的 MultiIndex(多重索引)来创建多级列。以下是一个示例代码:
```python
import pandas as pd
# 创建一个多级列的 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df.columns = pd.MultiIndex.from_tuples([('Group1', 'A'), ('Group1', 'B'), ('Group2', 'C')])
print(df)
```
输出结果如下:
```
Group1 Group2
A B C
0 1 4 7
1 2 5 8
2 3 6 9
```
你可以看到,这个 DataFrame 有两个层级的列,第一层级是 'Group1' 和 'Group2',第二层级是 'A'、'B' 和 'C'。你可以使用与普通 DataFrame 相同的方式访问这个 DataFrame 的数据。例如,要访问第一列第二行的数据,你可以使用以下代码:
```python
print(df.loc[1, ('Group1', 'A')])
```
输出结果为:
```
2
```
相关问题
df 创建全为空值的多级的列
你可以使用 pandas 中的 MultiIndex(多重索引)来创建多级列,并将所有的单元格初始化为空值。以下是一个示例代码:
```python
import pandas as pd
import numpy as np
# 创建一个所有单元格都为空值的多级列的 DataFrame
df = pd.DataFrame(np.nan, index=[0, 1, 2], columns=pd.MultiIndex.from_tuples([('Group1', 'A'), ('Group1', 'B'), ('Group2', 'C')]))
print(df)
```
输出结果如下:
```
Group1 Group2
A B C
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
```
你可以看到,这个 DataFrame 有两个层级的列,第一层级是 'Group1' 和 'Group2',第二层级是 'A'、'B' 和 'C'。所有单元格都被初始化为空值。你可以使用与普通 DataFrame 相同的方式访问这个 DataFrame 的数据。例如,要访问第一列第二行的数据,你可以使用以下代码:
```python
print(df.loc[1, ('Group1', 'A')])
```
输出结果为:
```
nan
```
如何去掉pandas中df的多级列索引
在 `pandas` 中,您可以使用 `reset_index()` 方法来去掉多级列索引。例如,如果您有一个包含两个级别的列索引的 DataFrame,可以使用以下代码去掉多级列索引:
```python
import pandas as pd
# 创建一个包含两个级别的列索引的示例数据框
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df.columns = pd.MultiIndex.from_tuples([('level_1', 'A'), ('level_1', 'B'), ('level_2', 'C')])
# 输出包含多级列索引的数据框
print(df)
# 去掉多级列索引
df = df.reset_index(drop=True, level=0)
# 输出去掉多级列索引后的数据框
print(df)
```
输出结果如下:
```
level_1 level_2
A B C
0 1 4 7
1 2 5 8
2 3 6 9
level_1 level_1 level_2
A B C
0 1 4 7
1 2 5 8
2 3 6 9
```
在上面的代码中,我们首先创建了一个包含两个级别的列索引的示例数据框。然后,我们使用 `reset_index()` 方法去掉了多级列索引,并将 `level` 参数设置为 0,以指定我们要去掉的是第一级别的列索引。最后,我们输出去掉多级列索引后的数据框。
请注意,我们在 `reset_index()` 方法中将 `drop` 参数设置为 True,以指定我们要去掉多级列索引,并将 `level` 参数设置为 0,以指定我们要去掉的是第一级别的列索引。如果您有多个级别的列索引,可以多次调用 `reset_index()` 方法来去掉多级列索引。