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

为何Pandas DataFrame的重索引与重置索引操作未生效?

问题分析与修复方案

1. reindex操作未生效

df.reindex(index=df.index[::-1])默认返回新的DataFrame副本,不会修改原对象。要让修改生效,有两种方式:

# 方式1:使用inplace参数直接修改原对象
df.reindex(index=df.index[::-1], inplace=True)
# 方式2:将返回的新DataFrame重新赋值给df
df = df.reindex(index=df.index[::-1])

2. reset_index操作被覆盖

执行df.reset_index(inplace=True, drop=True)后,紧接着用df.index = pd.to_datetime(...)替换了索引,导致reset_index的效果被完全抵消。如果确实需要先重置索引再设置日期索引,这两步顺序没问题,但要明确重置后的索引会被覆盖;如果不需要重置索引,可直接删除这一步。

3. 返回值错误

df.drop(..., inplace=True)时,方法返回None,所以transformed_df实际是None,而非处理后的DataFrame。正确做法是去掉inplace=True,直接将结果赋值给变量:

transformed_df = df.drop(['areaCode', 'areaName', 'areaType', 'Date'], axis=1)

修正后的完整代码

import pandas as pd

def apply_transformation(df):
    # 重命名列
    df.rename(columns={"date" : "Date", "Wrong_name": "Correct_name"}, inplace=True)
    # 反转DataFrame
    df = df.reindex(index=df.index[::-1])
    # 设置日期索引(若无需重置索引,可删除下面注释的行)
    # df.reset_index(inplace=True, drop=True)
    df.index = pd.to_datetime(df['Date'], format='%Y-%m-%d')
    # 删除指定列并赋值
    transformed_df = df.drop(['areaCode', 'areaName', 'areaType', 'Date'], axis=1)
    return transformed_df

内容的提问来源于stack exchange,提问作者Ádám Szalóczi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:43:23