python - 在Python中以不同的步骤转移数据

标签 python pandas function numpy shift

如果我使用了错误的词汇,请纠正我。我想用不同的步骤转移我的数据。我发现对于可变窗口大小,此值会移动 1:

import pandas as pd
import numpy as np

a=np.random.rand(30)
series=pd.DataFrame(a)
window_size = 3
series_s = series.copy()
for i in range(window_size):
    series = pd.concat([series, series_s.shift(-(i+1))], axis = 1)

series.dropna(axis=0, inplace=True)

这里我像这样移动(点只是为了它会如何进行):

5 6  4    
6 4  3    
4 3  8    
3 8  9    
8 9  10    
9 10 .    
10 . .

我想做的是改变,例如通过 2:

5 4  8
6 3  9    
4 8 10   
3 9  .    
8 10 .    
9  . .    
10 . .

我该如何更改上面的代码或者我该如何做到这一点?

最佳答案

shift 返回数据帧的副本,它不会修改它,因此不需要创建副本。

您可以使用列表理解来进一步清理代码,并使用一些代数将每列移动两位而不是一位。

x = np.random.randint(1, 10, 10)
df = pd.DataFrame(x)
dfs = [df.shift(-(2+2*i)) for i in range(3)]

pd.concat([df, *dfs], axis=1)

   0    0    0    0
0  3  1.0  3.0  8.0
1  9  1.0  6.0  8.0
2  1  3.0  8.0  1.0
3  1  6.0  8.0  9.0
4  3  8.0  1.0  NaN
5  6  8.0  9.0  NaN
6  8  1.0  NaN  NaN
7  8  9.0  NaN  NaN
8  1  NaN  NaN  NaN
9  9  NaN  NaN  NaN

这种方法确实为每列留下了相同的列标题,您可以使用以下内容来修复:

df_result.columns = range(len(df_result.columns))

关于python - 在Python中以不同的步骤转移数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50659519/

相关文章:

python - Django 外键访问是如何工作的

python - 使用 pkcs11 模块使用公钥加密数据失败

python - 根据第三列设置列中具有共同值的行的日期

python - 无法生成列表以显示列表中的任何匹配项

javascript - 获取在匿名函数中获取的属性,以便在文件范围之外使用它们

Jquery返回post数据

javascript - 了解函数返回

python - 覆盖 Python 析构函数 (__del__) 会导致内存泄漏吗?

python - 如何检查数据框中的列是否等于 Pandas 中的某种数据类型?

python - Chrome 浏览器从 chromedriver 启动时随机挂起