如何将多列类别-条目结构的DataFrame转换为两列格式?
DataFrame宽表转两列长表的实现方法
直接用pandas的melt()函数就能搞定,这是处理这类格式转换的标准方法,步骤如下:
- 假设你的原始DataFrame变量名为
df,执行以下代码:
import pandas as pd # 转换格式,同时指定新列的表头 result_df = pd.melt(df, var_name='类别', value_name='条目') # 去掉转换后产生的空值行(原表中列长度不一致时会生成NaN) result_df = result_df.dropna().reset_index(drop=True)
- 参数说明:
var_name:设置第二列的表头(对应原表的列名,也就是类别)value_name:设置第一列的表头(对应原表的条目内容)dropna():移除转换后出现的空值行,避免无效数据reset_index(drop=True):重置索引,让结果更规整
举个简单例子,如果你原表是这样的:
| 水果 | 蔬菜 |
|---|---|
| 苹果 | 白菜 |
| 香蕉 | 萝卜 |
| 橘子 | NaN |
转换后就会变成:
| 类别 | 条目 |
|---|---|
| 水果 | 苹果 |
| 水果 | 香蕉 |
| 水果 | 橘子 |
| 蔬菜 | 白菜 |
| 蔬菜 | 萝卜 |
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

