python - 将 Pandas 系列的每 n 行转换为 DataFrame 的 n 列

标签 python pandas

我正在尝试转换 Pandas 系列,例如:


日期
值(value)


2020-01-01
-1175

2020-01-02
-475

2020-01-03
1945年

2020-01-06
-1295

2020-01-07
-835

2020-01-08
-785

2020-01-09
895

2020-01-10
-665


进入 Pandas 数据帧,如:


日期
0
1
2
3
4


2020-01-01
-1175
-475
1945年
-1295
-665

2020-01-02
-475
1945年
-1295
-835
-785

2020-01-03
1945年
-1295
-835
-785
895

2020-01-06
-1295
-835
-785
895
-665


系列的每 5(或 n)行在 DataFrame 中形成一行。
示例数据以及我当前(丑陋但有效)的代码如下:

import pandas as pd
srs = pd.Series(index=pd.DatetimeIndex(pd.date_range(start="2020-01-01",end="2020-1-10",freq="B")), 
                data=[-1175,-475,1945,-1295,-835,-785,895,-665])
n = 5
df = pd.concat({i: srs.shift(-i) for i in range(n)}, axis=1).dropna()
df = df[range(n)]
df.index = df.index.droplevel(level=0)
我想知道是否有更好/更整洁/更好的方法来做到这一点?

最佳答案

试试 sliding_window_view 来自 numpy :

n = 5
v = np.lib.stride_tricks.sliding_window_view(srs.values, n)
df = pd.DataFrame(v, index=srs.index[:v.shape[0]])
df :
               0     1     2     3    4
2020-01-01 -1175  -475  1945 -1295 -835
2020-01-02  -475  1945 -1295  -835 -785
2020-01-03  1945 -1295  -835  -785  895
2020-01-06 -1295  -835  -785   895 -665

完整的工作示例:
import numpy as np
import pandas as pd

srs = pd.Series(index=pd.DatetimeIndex(
    pd.date_range(start="2020-01-01", end="2020-1-10", freq="B")
), data=[-1175, -475, 1945, -1295, -835, -785, 895, -665])

n = 5
v = np.lib.stride_tricks.sliding_window_view(srs.values, n)
df = pd.DataFrame(v, index=srs.index[:v.shape[0]])

print(df)

关于python - 将 Pandas 系列的每 n 行转换为 DataFrame 的 n 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67894012/

相关文章:

python - Shapefile/ArcInfo 到 SVG?最好用Python

python - 多输入多元数据可视化

Python - 每个日期和月份的所有非零列的计数 PANDAS

python - Modin 之间的比较 |任务 |数据表 |用于并行处理和内存不足 csv 文件的 Pandas

python - pandas 数据透视表 - 导致意外边距的有序类别

python - 如何在 Windows 上为 RASA NLU 安装 MITIE NLP?

python - 使用 PyODBC 从 Linux 连接到 SQL Server

python - 如何有效地将多个列添加到 pandas 数据框中,其值依赖于其他动态列

python - Tokyocabinet fatal error C1083 : cannot open include file:tcbdb. h

python - Django Rest Framework POST 失败 : null value in column "cat_id" violates not-null constraint