gpt4 book ai didi

python - Pandas 用移位复制列

转载 作者:行者123 更新时间:2023-11-28 16:32:17 24 4
gpt4 key购买 nike

我有一个包含 3 个序列和一个时间轴的 pandas 时间序列对象。我想训练一个带有时间窗口的神经网络,因此我需要创建一个具有不同类次的重复 pandas 列的矩阵。我可以用 pandas.concat 手动完成,但这需要很长时间,而且不太灵活。我现在正在尝试的是:

# Make 40 columns with the original dataframe first column and
# make 20 columns with the original dataframe second column
param_array = pandas.DataFrame()
for i in range(1, 41) :
param_array = pandas.concat([param_array, input[[0]].shift(i * 2)], axis=1, ignore_index=True)

for i in range(1, 21) :
param_array= pandas.concat([param_array, input[[1]].shift(i * 2)], axis=1, ignore_index=True)

但这只是在第一个列的末尾附加时间序列,它不会生成新列。

最佳答案

我怀疑您对“输入[[0]]”的引用不正确。我在下面得到了您尝试使用自己的代码执行的操作的示例。新列是原始数据的移位值:

import pandas as pd

d = {'one': pd.Series(range(20)),'two':pd.Series(range(20)[::-1])}
df = pd.DataFrame(d)

print df

param_array = pd.DataFrame()
for i in range(1, 5) :
param_array = pd.concat([param_array, df['one'].shift(i * 2)], axis=1, ignore_index=True)

for i in range(1, 5) :
param_array = pd.concat([param_array, df['two'].shift(i * 2)], axis=1, ignore_index=True)

print param_array

输出:

   one  two
0 0 19
1 1 18
2 2 17
3 3 16
4 4 15
5 5 14
6 6 13
7 7 12
8 8 11
9 9 10
10 10 9
11 11 8
12 12 7
13 13 6
14 14 5
15 15 4
16 16 3
17 17 2
18 18 1
19 19 0
0 1 2 3 4 5 6 7
0 NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN
2 0 NaN NaN NaN 19 NaN NaN NaN
3 1 NaN NaN NaN 18 NaN NaN NaN
4 2 0 NaN NaN 17 19 NaN NaN
5 3 1 NaN NaN 16 18 NaN NaN
6 4 2 0 NaN 15 17 19 NaN
7 5 3 1 NaN 14 16 18 NaN
8 6 4 2 0 13 15 17 19
9 7 5 3 1 12 14 16 18
10 8 6 4 2 11 13 15 17
11 9 7 5 3 10 12 14 16
12 10 8 6 4 9 11 13 15
13 11 9 7 5 8 10 12 14
14 12 10 8 6 7 9 11 13
15 13 11 9 7 6 8 10 12
16 14 12 10 8 5 7 9 11
17 15 13 11 9 4 6 8 10
18 16 14 12 10 3 5 7 9
19 17 15 13 11 2 4 6 8

关于python - Pandas 用移位复制列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644769/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com