Python 使用shift键复制列
我有一个带有3个序列和一个时间轴的Python 使用shift键复制列,python,pandas,Python,Pandas,我有一个带有3个序列和一个时间轴的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
时间序列对象。我想训练一个有时间窗的神经网络,因此我需要创建一个具有不同位移的重复列矩阵。我可以用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
很难理解您的问题是什么:请看,有一些方法可以将列附加到数据帧。一种方法可以是df[“new_column”]=ts,其中df是一个数据帧,ts是某种类型的系列对象(列表、numpy数组…)。boardrider:我相信从我的原始熊猫数据集“创建一个复制熊猫列矩阵”是非常具有描述性的。如果你相信你能把它写得更好,请随意编辑。如果你相信这是一个解决问题的方法,你能接受答案吗?