我无法使用for循环将一个数组分配给另一个数组。下面是我的代码示例。
df = pd.read_csv('20-newsgroups-ciphertext-challenge/train.csv')
data_1 = df.query('difficulty==1')
X = data_1.iloc[:,-2]
y = data_1.iloc[:,-1]
def tokenize(text):
return text.split("1")
data = X
print(type(data))
print(type(X))
for i in range(len(X)):
data[i]=tokenize(X[i])
下面是错误代码。我对此一无所知。
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-32-4637ad724b98> in <module>
19 print(type(X))
20 for i in range(len(X)):
---> 21 data[i]=tokenize(X[i])
22
23 #print(data.head)
~/anaconda3/lib/python3.7/site-packages/pandas/core/series.py in __getitem__(self, key)
765 key = com._apply_if_callable(key, self)
766 try:
--> 767 result = self.index.get_value(self, key)
768
769 if not is_scalar(result):
~/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_value(self, series, key)
3116 try:
3117 return self._engine.get_value(s, k,
-> 3118 tz=getattr(series.dtype, 'tz', None))
3119 except KeyError as e1:
3120 if len(self) > 0 and self.inferred_type in ['integer', 'boolean']:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 0
我是python的新手,这里的情况似乎很简单,但我希望提供解决方案。 我希望对X数组进行标记,并将其分配给数据数组。
答案 0 :(得分:1)
如上所述,KeyError
表示您正在访问该列表中不存在的键(索引)。
最重要的是,我相信您可以简化此代码:
for i in range(len(X)):
data[i]=tokenize(X[i])
这样做:
data = [tokenize(i) for i in X]
答案 1 :(得分:0)
在循环中打印i
和X[i]
而不是将其发送到tokenize()
函数:KeyError
表示您无法访问{的ith
元素{1}}。
答案 2 :(得分:0)
迭代数据框的方式是错误的
for i in data.columns :
data[i] = data[i].apply(lambda x: tokenize(x))
您甚至不需要X