dataframe列转换为行
时间: 2025-05-31 07:19:33 浏览: 13
### 使用 `melt` 方法实现 DataFrame 的列转行
在 Pandas 中,可以使用 `DataFrame.melt()` 函数将宽格式的数据转换为长格式的数据。此操作通常被称为逆透视表 (unpivot) 或者列转行。
以下是基于提供的引用以及实际需求的具体说明和代码示例:
#### 基本语法
Pandas 提供了 `melt` 方法来执行这一操作,其主要参数如下:
- **`id_vars`**: 表示保持不变的列(即不需要被重塑的列)。
- **`value_vars`**: 表示需要被重塑的列,默认情况下会选取所有不在 `id_vars` 中的列。
- **`var_name`**: 定义新生成的一列表示原列名称的新列名。
- **`value_name`**: 定义新生成的一列表示原数值的新列名。
具体调用方式可参见以下代码示例[^1]。
#### 示例代码
假设有一个简单的 DataFrame 如下所示:
```python
import pandas as pd
X1 = pd.DataFrame(
{
"Person": ["Bob", "Alice", "Steve"],
"Age": [32, 24, 64],
"Weight": [128, 86, 95],
"Height": [180, 175, 165],
}
)
print(X1)
```
运行结果为:
```
Person Age Weight Height
0 Bob 32 128 180
1 Alice 24 86 175
2 Steve 64 95 165
```
如果希望将 `Age`, `Weight`, 和 `Height` 这些列为变量并将其转化为两列形式,则可以通过以下代码完成:
```python
# 将指定列作为固定列(id_vars), 其余列进行熔化(value_vars)
result = pd.melt(
X1,
id_vars=["Person"], # 不变的列
value_vars=["Age", "Weight", "Height"], # 被重塑的列
var_name="Attribute", # 变量名称所在列的名字
value_name="Value" # 数值所在列的名字
)
print(result)
```
运行结果为:
```
Person Attribute Value
0 Bob Age 32
1 Alice Age 24
2 Steve Age 64
3 Bob Weight 128
4 Alice Weight 86
5 Steve Weight 95
6 Bob Height 180
7 Alice Height 175
8 Steve Height 165
```
以上代码实现了将原始表格中的某些列 (`Age`, `Weight`, `Height`) 转换成长格式下的两列结构:一个是属性名(`Attribute`),另一个是对应的值(`Value`)。
#### 更复杂的场景
当存在多层索引或多级列头时,还可以通过设置 `col_level` 参数选择特定层次上的列来进行熔化操作[^3]。
例如对于一个多级列头的情况:
```python
multi_X1 = pd.DataFrame({
('Info', 'Name'): ['Bob', 'Alice', 'Steve'],
('Metrics', 'Age'): [32, 24, 64],
('Metrics', 'Weight'): [128, 86, 95],
('Metrics', 'Height'): [180, 175, 165]
})
multi_X1.columns.names = ['Category', 'Detail']
print(multi_X1)
```
输出为:
```
Category Info Metrics
Detail Name Age Weight Height
0 Bob 32 128 180
1 Alice 24 86 175
2 Steve 64 95 165
```
此时可以选择仅针对某一层进行熔化:
```python
melted_multi = multi_X1.melt(
id_vars=[('Info', 'Name')],
value_vars=[('Metrics', 'Age'), ('Metrics', 'Weight'), ('Metrics', 'Height')],
col_level=1,
var_name='Metric',
value_name='Measure'
)
print(melted_multi)
```
这将会得到一个更灵活的结果集。
---
阅读全文
相关推荐


















