关于切片 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
我正面临网上复制的多变量 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