首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pandas数据帧/ numpy数组-无聚合函数

pandas数据帧/ numpy数组-无聚合函数
EN

Stack Overflow用户
提问于 2019-04-28 22:24:27
回答 4查看 301关注 0票数 2

在python中滚动聚合数据:

代码语言:javascript
复制
x = pd.DataFrame([[1,'a'],[2,'b'],[3,'c'],[4,'d']], columns=['a','b'])
y = x.rolling(2).mean()
print(y)

提供:

代码语言:javascript
复制
     a  b
0  NaN  a
1  1.5  b
2  2.5  c
3  3.5  d

我需要的是3维数据帧(或numpy数组)将3个样本移位1步(在本例中):

代码语言:javascript
复制
[
  [[1,'a'],[2,'b'],[3,'c']],
  [[2,'b'],[3,'c'],[4,'d']]
]

对于900个样本,每一步移动1的正确方法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-28 23:09:12

使用np.concantenate

代码语言:javascript
复制
np.concatenate([x.values[:-1], 
                x.values[1:]], axis=1)\
  .reshape([x.shape[0] - 1, x.shape[1], -1])
票数 2
EN

Stack Overflow用户

发布于 2019-04-28 23:02:30

您可以尝试基于所选的窗口长度(如所选的2)来连接与窗口长度相关的数据帧

代码语言:javascript
复制
length = df.dropna().shape[0]-1
cols = len(df.columns)
pd.concat([df.shift(1),df],axis=1).dropna().astype(int,errors='ignore').values.reshape((length,cols,2))

输出:

代码语言:javascript
复制
array([[[1, 'a'],
        [2, 'b']],

       [[2, 'b'],
        [3, 'c']],

       [[3, 'c'],
        [4, 'd']]], dtype=object)
票数 1
EN

Stack Overflow用户

发布于 2019-04-29 01:19:16

让我知道这个解决方案是否适合你的问题。

代码语言:javascript
复制
p = x[['a','b']].values.tolist()  # create a list of list ,as [i.a,i.b] for every i row in x
#### Output  ####
[[1, 'a'], [2, 'b'], [3, 'c'], [4, 'd']]


#iterate through list except last two and for every i, fetch p[i],p[i+1],p[i+2] into a list
list_of_3 = [[p[i],p[i+1],p[i+2]] for i in range(len(p)-2)]

#### Output  ####
[
    [[1, 'a'], [2, 'b'], [3, 'c']],
    [[2, 'b'], [3, 'c'], [4, 'd']]
]



# This is used if in case the list you require is numpy ndarray
from numpy import array
a = array(list_of_3)

#### Output  ####
[[['1' 'a']
  ['2' 'b']
  ['3' 'c']]

 [['2' 'b']
  ['3' 'c']
  ['4' 'd']]
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55891221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档