python - 按组重新索引 Pandas 时间序列

标签 python pandas time-series dataframe

所以我想做的是重新索引一个数据帧,该数据帧在框架内有一堆单独的组。每个都有自己的索引,我想在其中添加月末索引。我认为最好的例子是:

给定这个数据框:

In [72]: a = {'2014-01-02': {'A': 1}, '2014-02-03': {'A': 1}, '2014-03-05': {'A': 1}}

In [74]: b = {'2015-01-02': {'A': 2}, '2015-02-03': {'A': 2}, '2015-03-05': {'A': 2}}
In [76]: pd.DataFrame.from_dict(a,orient='index').append(pd.DataFrame.from_dict(b,orient='index'))
Out[76]:
            A
2014-01-02  1
2014-02-03  1
2014-03-05  1
2015-01-02  2
2015-02-03  2
2015-03-05  2

(注意 2014 年与 2015 年对比)

我想获取“A”列中的两个组,并对每个组重新建立索引,以包含每个组从最小值到索引最大值之后的月末。我想要这样的输出:

            A
2014-01-02  1
2014-01-31  1
2014-02-03  1
2014-02-28  1
2014-03-05  1
2014-03-31  1
2015-01-02  2
2015-01-31  2
2015-02-03  2
2015-02-28  2
2015-03-05  2
2015-03-31  2

最佳答案

In [59]:
df.index = pd.to_datetime(df.index , format = '%Y-%m-%d')
df
Out[59]:
            A
2014-01-02  1
2014-02-03  1
2014-03-05  1
2015-01-02  2
2015-02-03  2
2015-03-05  2

In [61]:
month_end = df.resample('M').dropna()
month_end
Out[61]:
            A
2014-01-31  1
2014-02-28  1
2014-03-31  1
2015-01-31  2
2015-02-28  2
2015-03-31  2

In [64]:
pd.concat([df , month_end]).sortlevel(0)
Out[64]:
            A
2014-01-02  1
2014-01-31  1
2014-02-03  1
2014-02-28  1
2014-03-05  1
2014-03-31  1
2015-01-02  2
2015-01-31  2
2015-02-03  2
2015-02-28  2
2015-03-05  2
2015-03-31  2

关于python - 按组重新索引 Pandas 时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683390/

相关文章:

python - 使用 Jython/Swing 重新映射键盘导航

javascript - 允许用户继续使用终端的终端应用程序

python - 使用pyinstaller打包后,python中的程序无法运行

python - 将 pandas 数据帧作为参数传递给 python subprocess.Popen

Python/Pandas 从 DataFrames 中过滤掉唯一的行

python - 使用 Pandas 查找时间序列中方差最小的部分/窗口

python - 使用 numpy 列表到矩阵转换

python - 将 pandas DataFrame 写入 CSV 文件

r - 如何处理每次有多个点的时间序列(在 R 中)?

r - 每周数据的时间序列分解