Python Value_counts()属性错误:';str';对象没有属性';价值单位计数';
我正在运行下面的代码,以满足概述的对象,但得到一个错误,我不知道如何修复Python Value_counts()属性错误:';str';对象没有属性';价值单位计数';,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我正在运行下面的代码,以满足概述的对象,但得到一个错误,我不知道如何修复 class variableTreatment(): def drop_zero_car_col(self, df): numerical = list(df._get_numeric_data().columns) categorical = list(set(df.columns).difference(set(numerical)))
class variableTreatment():
def drop_zero_car_col(self, df):
numerical = list(df._get_numeric_data().columns)
categorical = list(set(df.columns).difference(set(numerical)))
ls = []
for i in categorical:
d = dict(i.value_counts())
if len(d)==1:
ls.append(i)
df.drop(ls,axis=1,inplace=True)
return(df)
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler,StandardScaler,LabelEncoder
df = pd.read_excel('CKD.xlsx')
VT = variableTreatment()
VT
VT.drop_zero_car_col(df).head()
要执行此操作,请执行以下操作:
删除具有相同级别的分类列,例如具有所有“是”值的列
投入:
1.数据帧df:Dataframe
产出:
1.带删除列的数据帧df(如果未删除任何列,则返回相同的数据帧)
但我得到了一个错误:
AttributeError Traceback (most recent call last)
<ipython-input-10-e04a1da339fd> in <module>
----> 1 VT.drop_zero_car_col(df).head()
<ipython-input-3-64cf5361fc06> in drop_zero_car_col(self, df)
54 ls = []
55 for i in categorical:
---> 56 d = dict(i.value_counts())
57 if len(d)==1:
58 ls.append(i)
AttributeError: 'str' object has no attribute 'value_counts'```
AttributeError回溯(最近一次调用)
在里面
---->1垂直下降零点轿厢立柱(df)头部()
落车零车列(自,df)
54 ls=[]
55对于i,分类:
--->56 d=dict(i.值_计数())
57如果len(d)==1:
58.附加(i)
AttributeError:“str”对象没有属性“value\u counts”```
要在dataframe中删除具有相同值的非数字列,您可以更改函数,如下所示:
class variableTreatment():
def drop_zero_car_col(self, df):
# selecting numerical columns without accessing private method
numerical = list(df.select_dtypes([np.number]).columns)
categorical = list(set(df.columns).difference(set(numerical)))
# after above line categorical will have only non numeric columns
ls = []
for i in categorical:
# value_counts will return series containing count of non unique values
d = df[i].value_counts()
# if series length is 1 then it means there is only one value in column that is duplicated across all rows so this columns should be dopped
if len(d)==1:
ls.append(i)
df.drop(ls,axis=1,inplace=True)
return(df)
为什么在Strings上使用series value_counts方法这里的类的用途是什么?我看到很多奇怪的操作,你能分享更多的代码和数据吗?看:。卡皮尔-一个朋友在帮助我,当我们研究时,我们认为这是正确的方法。你建议怎么做?Alexander-该类下还有一系列与该函数无关的其他函数。这门课也代表VT。我明天第一件事就可以发布数据