1
我有所謂的「設計」的一個數據幀的對象,我從所謂的「DF」像這樣一個數據幀對象構建另一個數據框:熊貓數據框柱時,我期待一個系列
design = df.loc[year, [DV] + IVs + controls].copy(deep=True)
其中
"DV" = a string
"IVs" = list of strings
"controls" = list of strings
當我再嘗試訪問的「設計」專欄中,我通常得到一個系列,符合市場預期,並且可以使用.unique()方法:
design[DV].unique()
^工作正常,通常。
但是,有時,當我使用DV,IVs和控件的不同組合時,design [DV]是一個DataFrame(它沒有.unique()方法)。我很難理解爲什麼。
任何想法?
注意:也許這很重要?有時「控制」是一個空的列表。有時列表包含unicode字符串。
在此先感謝!
編輯:
@AndyHayden,這裏是一個例子:
設計=數據幀與一列重複的( '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)
當我打電話設計[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
劉德華,非常感謝!我的DataFrame確實包含重複項,但是,我想要的列(DV)沒有重複。 要使用上面的示例,就好像df_a ['A']在存在重複項'B'時返回了DataFrame,但是當我刪除它們時,即del df_a ['B'],然後df_a [ A']按照我的意願返回了一個系列。希望我想說的話是有道理的。如果不是,我可以描述我的數據中特別發生的事情。 – DrMisha
@DrMisha不接受任何理由? –
安迪,我之間接受/不接受有點之間動搖,因爲雖然你的評論解決了我的問題,它不是一個..直接(不知道要使用什麼字)解決方案。在我的數據調用中,df_a ['A']返回了一個DataFrame,即使'A'列沒有被複制。擺脫重複的'B'列使得df_a ['A']按照我的意願返回一個系列。這種行爲對我來說似乎很奇怪,但幸運的是我不需要重複的'B'列。所以我很高興刪除這些來獲得我想要的行爲。任何人,接受答案,並感謝您節省我幾個小時的麻煩! – DrMisha