【问题标题】:Pandas rolling computations for printing elements in the window用于在窗口中打印元素的 Pandas 滚动计算
【发布时间】:2016-07-20 05:49:32
【问题描述】:

我想以滑动窗口的方式从 pandas 数据框列中的值制作一个系列。例如,如果这是我的数据框

    state
0    1
1    1
2    1
3    1
4    0
5    0
6    0
7    1
8    4
9    1

对于说 3 的窗口大小,我想得到一个列表为 [111, 111, 110, 100, 000...]

我正在寻找一种有效的方法来做到这一点(当然,我可以简单地将 state 转换为列表,然后滑动列表索引)。有没有办法在这里使用熊猫滚动计算?我可以以某种方式在滚动窗口中打印元素吗?

【问题讨论】:

  • 我假设每个状态都在 0-9 范围内?如果没有,您将无法解码结果,例如1、1、11 对 1、11、1。
  • @Alexander:在我的情况下,范围是 0-9。所以这个方法非常有效。如果我们必须使其通用并将其打印为 [[1,1,1], [1,1,1], [1,1,0]] 那么我不知道如何处理它。

标签: python pandas dataframe


【解决方案1】:
a = np.array([100, 10, 1])
s.rolling(3).apply(a.dot).apply('{:03.0f}'.format)

0    nan
1    nan
2    111
3    111
4    110
5    100
6    000
7    001
8    014
9    141
Name: state, dtype: object

感谢@Alex 提醒我使用dot

【讨论】:

  • 谢谢!确实很聪明:)
猜你喜欢
  • 2012-12-27
  • 2021-03-01
  • 1970-01-01
  • 2019-07-01
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多