Python 3.x 枚举返回索引-1,导致ValueError:值的长度与索引的长度不匹配
我正在尝试在我的df中创建一个新的专栏,类似于:Python 3.x 枚举返回索引-1,导致ValueError:值的长度与索引的长度不匹配,python-3.x,pandas,enumerate,Python 3.x,Pandas,Enumerate,我正在尝试在我的df中创建一个新的专栏,类似于: df["Signal"] = signalList 然而,我得到了这个错误“Enumerate返回索引-1导致ValueError:值的长度与索引的长度不匹配”。所以我检查了我专栏的长度: print(len(df["Crossover"])) 返回8192。所以我将代码调整为打印*x,这样我就可以看到它上升到哪里,得到*8191。我怎样才能解决这个问题?干杯 signalList = [] for x,i in enumerate(df[
df["Signal"] = signalList
然而,我得到了这个错误“Enumerate返回索引-1导致ValueError:值的长度与索引的长度不匹配”。所以我检查了我专栏的长度:
print(len(df["Crossover"]))
返回8192。所以我将代码调整为打印*x,这样我就可以看到它上升到哪里,得到*8191。我怎样才能解决这个问题?干杯
signalList = []
for x,i in enumerate(df["Crossover"]):
print("*"+str(x))
if i == True:
if df['EMA ' + str(emaShort)].iloc[x] > df['EMA ' + str(emaLong)].iloc[x]:
signal = "Buy"
signalList.append(signal)
elif df['EMA ' + str(emaShort)].iloc[x] < df['EMA ' + str(emaLong)].iloc[x]:
signal = "Sell"
signalList.append(signal)
elif i != True:
signal = "None"
signalList.append(signal)
首先,代码中可能没有正确的缩进,正确的缩进是
signalList = []
for x, i in enumerate(df["Crossover"]):
print("*" + str(x))
if i == True:
if df['EMA ' + str(emaShort)].iloc[x] > df['EMA ' + str(emaLong)].iloc[x]:
signal = "Buy"
signalList.append(signal)
elif df['EMA ' + str(emaShort)].iloc[x] < df['EMA ' + str(emaLong)].iloc[x]:
signal = "Sell"
signalList.append(signal)
elif i != True:
signal = "None"
signalList.append(signal)
我想在您的代码> df中有一行满足这个条件。
而不是< <代码> < /COD> >循环考虑如下:将numpy导入为np
df['signal']=np.where(df['Crossover'],np.where(df[f'EMA{emaShort}].lt(df[f'EMA{emaLong}]),'Sell','Buy'),'None')
您将以这种方式利用矢量化处理,这将使您的代码性能更好……缩进是一个复制粘贴错误,我想至少我在atom中的代码缩进正确。你对这个问题的假设非常正确,所以谢谢你!。这叫什么,我可以用谷歌搜索你能给我一篇好文章的链接吗?lt做什么?
lt
-相当于干杯我在我的代码中添加了一个编辑你有机会看一下吗?我遇到了一些麻烦,由于我是矢量化处理的新手,我有点卡住了。
signalList = []
for x, i in enumerate(df["Crossover"]):
print("*" + str(x))
if i == True:
if df['EMA ' + str(emaShort)].iloc[x] > df['EMA ' + str(emaLong)].iloc[x]:
signal = "Buy"
signalList.append(signal)
elif df['EMA ' + str(emaShort)].iloc[x] < df['EMA ' + str(emaLong)].iloc[x]:
signal = "Sell"
signalList.append(signal)
elif i != True:
signal = "None"
signalList.append(signal)
df['EMA ' + str(emaShort)].iloc[x] == df['EMA ' + str(emaLong)].iloc[x]: