我有一个名为“design”的DataFrame对象,它是由一个名为“df”的DataFrame对象构造的,如下所示:
design = df.loc[year, [DV] + IVs + controls].copy(deep=True)
在哪里
"DV" = a string
"IVs" = list of strings
"controls" = list of strings
当我尝试访问“design”列时,我通常会像预期的那样获取一个序列,并且可以使用.unique()方法:
design[DV].unique()
通常情况下,工作正常。你知道吗
然而,有时,当我使用DV、IVs和控件的不同组合时,design[DV]是一个数据帧(它没有.unique()方法)。我不明白为什么。你知道吗
有什么想法吗?你知道吗
注意:也许这很重要?有时“控件”是一个空列表。有时列表包含unicode字符串。你知道吗
提前谢谢!你知道吗
编辑:
@AndyHayden,举个例子:
design=DataFrame,有一列重复('SPKATH'):
DV='LETDIE1'
ipdb> design.columns Index([u'LETDIE1', u'SUICIDE1', u'REGION', u'AGE', u'SEX', u'RACE', u'DEGREE', u'INCOME', u'RELIG', u'RELITEN', u'ATTEND', u'POLVIEWS', u'SPKATH', u'SPKCOM', u'SPKATH'], dtype=object)
调用design[DV].unique()时出现错误:
> /home/misha/.local/lib/python2.7/site-packages/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/core/frame.py(2088)__getattr__() 2087 raise AttributeError("'%s' object has no attribute '%s'" % -> 2088 (type(self).__name__, name)) 2089
ipdb> a
self = <class 'pandas.core.frame.DataFrame'>
Index: 1530 entries, 1977.0 to 1977.0
Data columns (total 1 columns): LETDIE1 1530 non-null values dtypes: float64(1)
name = unique
出现这种情况的一种情况是,如果有重复的列,即DV在IVs或controls中。例如:
解决这个问题的一种方法是按位置选择:
相关问题 更多 >
编程相关推荐