我在一个必须使用Pandas包的项目上工作,运行时遇到了这个错误:
TypeError: slice indices must be integers or None or have an __index__ method
所以我的程序如下所示:
v_features = df.ix[:,1:29].columns
for i, cn in enumerate(df[v_features]):
sns.distplot(df[cn][df.Class == 1], bins=50)
sns.distplot(df[cn][df.Class == 0], bins=50)
功能包含以下内容:
Index(['V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10', 'V11',
'V12', 'V13', 'V14', 'V15', 'V16', 'V17', 'V18', 'V19', 'V20', 'V21',
'V22', 'V23', 'V24', 'V25', 'V26', 'V27', 'V28'],
dtype='object')
我不知道我在哪里弄乱我的代码
答案 0 :(得分:1)
我遇到同样的问题,解决方案来自this:
conda install -c conda-forge statsmodels
然后使用:
a = df.loc[df.Class == 1, df.columns[1:29]]
b = df.loc[df.Class == 0, df.columns[1:29]]
for x in range(28):
sns.distplot(a.iloc[:, x], bins=50)
sns.distplot(b.iloc[:, x], bins=50)
样品:
np.random.seed(234)
cols = ['V1', 'V2', 'V3', 'V4', 'V5', 'V6', 'V7', 'V8', 'V9', 'V10', 'V11',
'V12', 'V13', 'V14', 'V15', 'V16', 'V17', 'V18', 'V19', 'V20', 'V21',
'V22', 'V23', 'V24', 'V25', 'V26', 'V27', 'V28']
df = pd.DataFrame(np.random.randint(10, size=(10, 28)), columns=cols)
df['Class'] = df['V1'].gt(4).astype(int)
#print (df)
a = df.loc[df.Class == 1, df.columns[1:29]]
b = df.loc[df.Class == 1, df.columns[1:29]]
for x in range(28):
sns.distplot(a.iloc[:, x], bins=50)
sns.distplot(b.iloc[:, x], bins=50)