Python 熊猫不会让我重新索引?

Python 熊猫不会让我重新索引?,python,pandas,Python,Pandas,我正在创建一个函数,以便更轻松地操作类似的数据集,但由于某些原因,该函数没有重新为数据帧编制索引。有人能告诉我发生了什么事吗?我试图找出如何重新索引和插值数据,我想知道为什么它会停在那里 代码: 从v0.23.4开始: DataFrame.reindex支持两种调用约定 (索引=索引标签,列=列标签,…) (标签,轴={'index','columns'},…) 我们强烈建议使用关键字参数来阐明您的意图 编辑:下面的代码适合我。我在函数中添加了一个return语句 import pandas

我正在创建一个函数,以便更轻松地操作类似的数据集,但由于某些原因,该函数没有重新为数据帧编制索引。有人能告诉我发生了什么事吗?我试图找出如何重新索引和插值数据,我想知道为什么它会停在那里

代码:

从v0.23.4开始:

DataFrame.reindex支持两种调用约定

(索引=索引标签,列=列标签,…)
(标签,轴={'index','columns'},…)

我们强烈建议使用关键字参数来阐明您的意图

编辑:下面的代码适合我。我在函数中添加了一个
return
语句

import pandas as pd

raw_series = {'Yd': [3.36, 3.39, 3.26, 3.25, 3.24, 3.05, 3.04, 2.98, 2.96, 2.97, 3.03, '.']}
raw_index = ['2004-01-02', '2004-01-05', '2004-01-06', '2004-01-07', '2004-01-08', '2004-01-09', '2004-01-12', '2004-01-13', '2004-01-14', '2004-01-15', '2004-01-16', '2004-01-19']

dat = pd.DataFrame(raw_series, index=raw_index)

def func(dat):
    dat.loc[:, 'Yd'] = pd.to_numeric(dat['Yd'], errors="coerce")
    dat.index = pd.to_datetime(dat.index)

    scale = pd.date_range(raw_index[0], raw_index[-1], freq='D')
    reindexed = dat.reindex(index=scale)
    return reindexed.interpolate(method='time')
输出:

            Yd
2004-01-02  3.360000
2004-01-03  3.370000
2004-01-04  3.380000
2004-01-05  3.390000
2004-01-06  3.260000
2004-01-07  3.250000
2004-01-08  3.240000
2004-01-09  3.050000
2004-01-10  3.046667
2004-01-11  3.043333
2004-01-12  3.040000
2004-01-13  2.980000
2004-01-14  2.960000
2004-01-15  2.970000
2004-01-16  3.030000
2004-01-17  3.035000
2004-01-18  3.040000
2004-01-19  3.045000
2004-01-20  3.050000
验证数据类型:

>>>func(dat).reset_index().dtypes

index    datetime64[ns]
Yd              float64
dtype: object

您是否有任何错误?我没有收到任何错误,只是没有对数据重新编制索引,也没有插值。请共享数据帧的样本,以便重新生成您的问题?在有问题的行(
dat=dat.reindex(scale)
)中,您覆盖了参数,而不是原始数据帧或序列。该函数可以工作,但您永远不会返回结果。在末尾添加
return dat
,并在调用者中使用返回值。我的“在调用者中使用返回值”是什么意思?当我返回dat时,它不会覆盖dat,它只返回itdata已添加@RALEXPLESE read。特别是,请提供样本数据作为代码。
            Yd
2004-01-02  3.360000
2004-01-03  3.370000
2004-01-04  3.380000
2004-01-05  3.390000
2004-01-06  3.260000
2004-01-07  3.250000
2004-01-08  3.240000
2004-01-09  3.050000
2004-01-10  3.046667
2004-01-11  3.043333
2004-01-12  3.040000
2004-01-13  2.980000
2004-01-14  2.960000
2004-01-15  2.970000
2004-01-16  3.030000
2004-01-17  3.035000
2004-01-18  3.040000
2004-01-19  3.045000
2004-01-20  3.050000
>>>func(dat).reset_index().dtypes

index    datetime64[ns]
Yd              float64
dtype: object