You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Pandas中调整DataFrame行位置并完成数据转换?

使用Pandas转换数据格式及调整行位置的方法

一、将现有宽表转换为预期的长表格式

根据你的现有数据(宽表结构:日期为标识列,各类别为数据列)和预期输出(长表结构:日期、类别、数值三列),可以用Pandas的melt()方法快速实现转换:

示例代码

先模拟现有数据的DataFrame:

import pandas as pd

data = {
    "日期": ["2023-01-01", "2023-01-02"],
    "A类": [10, 15],
    "B类": [20, 25],
    "C类": [30, 35]
}
df = pd.DataFrame(data)

执行格式转换:

# id_vars指定保留的标识列,var_name设置类别列名,value_name设置数值列名
df_melted = df.melt(id_vars=["日期"], var_name="类别", value_name="数值")

转换后的结果与预期格式一致:

日期  类别  数值
0  2023-01-01  A类  10
1  2023-01-02  A类  15
2  2023-01-01  B类  20
3  2023-01-02  B类  25
4  2023-01-01  C类  30
5  2023-01-02  C类  35

若需要按日期排序,可补充:

df_melted = df_melted.sort_values("日期").reset_index(drop=True)

二、调整DataFrame行位置更新数据

Pandas中调整行位置的常见操作如下:

1. 自定义行顺序排列

已知目标行的索引时,直接通过索引列表重新排列:

# 按[2,0,1,3,4,5]的索引顺序重新排列
new_order = [2, 0, 1, 3, 4, 5]
df_reordered = df_melted.loc[new_order]

2. 按列值排序调整

用sort_values()根据列值排序,支持多列排序和升降序设置:

# 按"数值"降序排列
df_sorted = df_melted.sort_values("数值", ascending=False)
# 按"日期"升序、"数值"降序排列
df_multi_sorted = df_melted.sort_values(["日期", "数值"], ascending=[True, False])

3. 移动指定行到特定位置

比如将某行移到开头或末尾:

# 将索引为3的行移到开头
row_to_move = df_melted.loc[3:3]
df_updated = pd.concat([row_to_move, df_melted.drop(3)]).reset_index(drop=True)

4. 重置索引

调整行位置后索引可能混乱,用reset_index(drop=True)生成连续索引:

df_updated = df_updated.reset_index(drop=True)

内容的提问来源于stack exchange,提问作者hilhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:25:22