Pandas的日期时间数据应该在索引中吗?

2024-05-13 23:59:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我的意思是 熊猫就是这样设计的吗?所有的时间序列函数都是建立在这个假设之上的吗?

几周前,我在试验pandas.rolling_mean,它似乎希望datetime在索引中。你知道吗

给定这样的数据帧:

df = pd.DataFrame({'date' : ['23/10/2017', '24/10/2017', '25/10/2017','26/10/2017','27/10/2017'], 'dax-close' : [13003.14, 13013.19, 12953.41,13133.28,13217.54]})
df['date'] = pd.to_datetime(df['date'])
df

datetime as column

…始终这样做是否重要:

df.set_index('date', inplace=True)
df

datetime as index

…作为分析的第一步?你知道吗


Tags: to数据函数dataframepandasdfclosedatetime
1条回答
网友
1楼 · 发布于 2024-05-13 23:59:06

简而言之,timeseries数据通常将date作为DatetimeIndex。许多pandas函数确实利用了这一点,例如^{}是一个很大的函数。你知道吗

也就是说,您不需要将日期作为索引,例如,您甚至可能有多个Datetime列,那么您将vanilla resample称为。。。但是,您可以使用^{}在列上定义“重采样”(或者作为更大/多列groupby的一部分)

In [11]: df.groupby(pd.Grouper(key="date", freq="2D")).sum()
Out[11]:
            dax-close
date
2017-10-23   26016.33
2017-10-25   26086.69
2017-10-27   13217.54

In [12]: df.set_index("date").resample("2D").sum()
Out[12]:
            dax-close
date
2017-10-23   26016.33
2017-10-25   26086.69
2017-10-27   13217.54

前者提供了更大的灵活性,因为您可以按多个列进行分组:

In [21]: df["X"] = list("AABAC")

In [22]: df.groupby(["X", pd.Grouper(key="date", freq="2D")]).sum()
Out[22]:
              dax-close
X date
A 2017-10-23   26016.33
  2017-10-25   13133.28
B 2017-10-25   12953.41
C 2017-10-27   13217.54

相关问题 更多 >