我试图创建一个函数,它根据列表中的值从 Dataframe 中删除不需要的列,并通过将 Dataframe 中的一列移动到另一个 Dataframe 中,将剩余的列分离到两个不同的 Dataframe 中。
不需要的列在第一个for循环中被删除,如果Tkinter变量 variabletype 等于1,索引为 i 的列将从表中删除。当这些列被删除时,后面的列的索引似乎减少了1,为了确保我们不会因此而丢失任何列,我实现了 count 变量。如果在迭代过程中没有删除列,我们将把 variabletype 的第i个元素附加到一个局部变量 usedvartypes 中,我们将在第二个for循环中使用它。
第一个很好用,但是第二个总是给我同样的错误。它应该做的是使用 usedvartypes 的长度迭代剩余的列,如果 usedvartypes 中的第i个元素等于0,我们想把第i个列复制到一个新的 Dataframe 中,并把它从前一个 Dataframe 中删除。但是,每当我试图运行这个命令时,我在第i个索引处收到KeyError。我不明白为什么,我尝试访问Pandas Dataframe 的方式错误吗?
def createFinalDataframe():
global data
global finaldata_x
global finaldata_y
global variabletype #each value represents a single column in the dataframe; equal to 0 (y) 1(unwanted) or 2(x)
finaldata_x = data
count = 0
usedvartypes=[]
for i in range(len(variabletype)):
if (variabletype[i].get() == 1):
finaldata_x = finaldata_x.drop(finaldata_x.columns[count], axis=1)
count = count - 1
else:
usedvartypes.append(variabletype[i].get())
count = count + 1
for i in range(len(usedvartypes)):
if (usedvartypes[i]==0):
finaldata_y = []
print(finaldata_x[i])
finaldata_y= finaldata_x[i].copy()
finaldata_x = finaldata_x.drop(finaldata_x.columns[i], axis=1)
break
1条答案
按热度按时间ej83mcc01#
在这里输入
iloc
。将print(finaldata_x[i])
更改为print(finaldata_x.iloc[:, i])
。更新逻辑: