在已有的pd中创建多级的列
时间: 2024-02-21 13:57:25 浏览: 19
如果你已经有一个 DataFrame,并且想要在其现有列的基础上添加多级列,你可以使用 pandas 的 MultiIndex(多重索引)。以下是一个示例代码:
```python
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# 将现有列转换为 MultiIndex(多重索引)
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
# 创建一个多级列的 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
```
如何去掉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()` 方法来去掉多级列索引。