2015-03-24 82 views
0

我在熊猫工作做透视表和做GROUPBY时(计数不同意见) aggfunc={"person":{lambda x: len(x.unique())}}使我有以下错误: 'DataFrame' object has no attribute 'unique' 任何想法如何解决它?大熊猫“数据帧”对象有没有属性“独特”

+0

你可以试试:'aggfunc = {“的人“:pd.Series.nunique}' – EdChum 2015-03-24 23:07:43

回答

5

DataFrames没有该方法;在DataFrames列做:

df['A'].unique() 

或者得到与观测次数的名称(使用闭环给出的数据帧):

>>> df.groupby('person').person.count() 
Out[80]: 
person 
0   2 
1   3 
Name: person, dtype: int64 
+0

df.describe,info?fillna? – Eliethesaiyan 2017-01-09 14:18:59

0

,而不是数据透视表过程中删除重复,使用df.drop_duplicates()函数来选择性地删除重复项。

例如,如果您使用这些index='c0'columns='c1'作为参考,那么这个简单的步骤会生成正确的计数。

在这个例子中,第5行是4的重复(忽略未转动c2

import pandas as pd 
data = {'c0':[0,1,0,1,1], 'c1':[0,0,1,1,1], 'person':[0,0,1,1,1], 'c_other':[1,2,3,4,5]} 
df = pd.DataFrame(data) 
df2 = df.drop_duplicates(subset=['c0','c1','person']) 
pd.pivot_table(df2, index='c0',columns='c1',values='person', aggfunc='count') 

这种正确输出

c1 0 1 
c0  
0 1 1 
1 1 1