关于切片 DataFrame 的一个奇怪错误

about an strange error on Slicing a DataFrame

我正面临网上复制的多变量 AI 算法。

在我的 2D 数据适应算法之后,我在计算 TrainX 和 TrainY 时遇到了一个奇怪的错误:

TypeError: '(slice(0, 14, None), slice(0, 5, None))' is an invalid key

考虑以下变量:n_past = 10,n_future = 1,df_for_training.shape == 343 x 6

for i in range(n_past, len(df_for_training) - n_future +1):
#    print(df_for_training[i - n_past:i, 0:df_for_training.shape[1]])
    
    print(i - n_past,'-',i, " ", 0,'-',df_for_training.shape[1])
    print(i + n_future - 1,'-',i + n_future, " ", 5)
    trainX.append(df_for_training[i - n_past:i, 0:df_for_training.shape[1]])
## Lo 5 di trainY puo essere scelto in funzione dell'output da predirre desiderato !! ##     
    trainY.append(df_for_training[i + n_future - 1:i + n_future, 5])

尽管代码的“独创性”和切片接缝显然与 2D 的 DataFrame 大小一致(不存在),因此我不明白这种错误是否仍然属于大小类型或由于错误的切片技术?

谢谢

数据帧的[]只对行进行切片,要对行和列进行切片,你需要iloc运算符:

import pandas as pd
mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},

          {'a': 100, 'b': 200, 'c': 300, 'd': 400},

          {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]

df = pd.DataFrame(mydict)
print(df.head())
print(df.iloc[1:3, 2:4])

输出:

      a     b     c     d
0     1     2     3     4
1   100   200   300   400
2  1000  2000  3000  4000
      c     d
1   300   400
2  3000  4000

一般提示: 始终在测试操作时创建小示例,因为这通常有助于查明问题。在这里提问也非常有用,因为阅读您的问题的任何人都可以轻松 copy/pasted