我有一个分类数据集,我试图将其转换为数字格式。我确实尝试了通用的一种热编码,但是它导致了巨大的规模。因此,我将编码限制为每个参数的前8个类别。
因此,我在每一列中进行循环。但是我在data_prep_text.i.value_counts遇到错误。
for i in data_prep_text.columns:
if len(data_prep_text[i].unique())>7:
top8=[j for j in data_prep_text.i.value_counts(ascending=False.head(8)).index]
for label in top8:
data_prep_text[label]=np.where(data_prep_text[i]==label,1,0)
else:
data_prep_text[i]=0
这是我面临的错误:
AttributeError Traceback (most recent call last)
<ipython-input-56-e25949bef086> in <module>
1 for i in data_prep_text.columns:
2 if len(data_prep_text[i].unique())>7:
----> 3 top8=[j for j in data_prep_text.i.value_counts(ascending=False.head(8)).index]
4 for label in top8:
5 data_prep_text[label]=np.where(data_prep_text[i]==label,1,0)
~/anaconda3_501/lib/python3.6/site-packages/pandas/core/generic.py in __getattr__(self, name)
4374 if self._info_axis._can_hold_identifiers_and_holds_name(name):
4375 return self[name]
-> 4376 return object.__getattribute__(self, name)
4377
4378 def __setattr__(self, name, value):
AttributeError: 'DataFrame' object has no attribute 'i'
'''
如果我正在使用“邻居”。 该代码没有使我有价值,而使它像data_prep_text.Neighborhood.value_counts。
答案 0 :(得分:0)
您应该使用方括号表示法来避免此问题,并删除head
方法,并通过切片取前8个值来替换它。
top8=[j for j in data_prep_text[i].value_counts(ascending=False)[:8].index]
当您执行data_prep_text.i
时,它等效于data_prep_text['i']
。