带有滚动窗口的 Pandas Dataframe 枢轴
Posted
技术标签:
【中文标题】带有滚动窗口的 Pandas Dataframe 枢轴【英文标题】:Pandas Dataframe pivot with rolling window 【发布时间】:2020-08-14 02:13:52 【问题描述】:我正在尝试使用Python
Pandas
(第一个计时器)为一些时间序列建模准备数据。我的DataFrame
看起来像这样:
df = pd.DataFrame(
'time': [0, 1, 2, 3, 4],
'colA': ['a', 'b', 'c', 'd', 'e'],
'colB': ['v', 'w', 'x', 'y', 'z'],
'value' : [10, 11, 12, 13, 14]
)
# time colA colB value
# 0 0 a v 10
# 1 1 b w 11
# 2 2 c x 12
# 3 3 d y 13
# 4 4 e z 14
是否有可以将其转换为以下格式的函数组合?
# colA-2 colA-1 colA colB-2 colB-1 colB value
# _ _ a _ _ v 10
# _ a b _ v w 11
# a b c v w x 12
# b c d w x y 13
# c d e x y z 14
我对 Python/Pandas 非常陌生,我没有任何具体的代码/结果可以让我接近我需要的...
【问题讨论】:
【参考方案1】:我会使用pd.concat
pd.concat([
df[['colA', 'colB']].shift(i).add_suffix(f'-i')
for i in range(1, 3)], axis=1
).fillna('-').join(df)
colA-1 colB-1 colA-2 colB-2 time colA colB value
0 - - - - 0 a v 10
1 a v - - 1 b w 11
2 b w a v 2 c x 12
3 c x b w 3 d y 13
4 d y c x 4 e z 14
【讨论】:
【参考方案2】:你可以使用移位功能:
df['colA-2'] =df['colA'].shift(2, fill_value='-' )
df['colA-1'] =df['colA'].shift(1,fill_value='-')
...
【讨论】:
以上是关于带有滚动窗口的 Pandas Dataframe 枢轴的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动均值(rolling mean)自定义指定滚动窗口的大小(window size)
pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动最小值(rolling minimum)自定义指定滚动窗口的大小(window size)
pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动加和值(rolling sum)自定义指定滚动窗口的大小(window size)
pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动最大值(rolling maximum)自定义指定滚动窗口的大小(window size)
pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动中位数(rolling median)自定义指定滚动窗口的大小(window size)