我在熊猫工作做透视表和做GROUPBY时(计数不同意见) aggfunc={"person":{lambda x: len(x.unique())}}
使我有以下错误: 'DataFrame' object has no attribute 'unique'
任何想法如何解决它?大熊猫“数据帧”对象有没有属性“独特”
0
A
回答
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
你可以试试:'aggfunc = {“的人“:pd.Series.nunique}' – EdChum 2015-03-24 23:07:43