在下面的数据cid框中,我想消除重复的值,以便的输出df.groupby('date').cid.size()与的输出匹配df.groupby('date').cid.nunique()。
cid
df.groupby('date').cid.size()
df.groupby('date').cid.nunique()
我看了这篇文章,但似乎没有解决该问题的可靠方法。
df = pd.read_csv('https://raw.githubusercontent.com/108michael/ms_thesis/master/crsp.dime.mpl.df') df.groupby('date').cid.size() date 2005 7 2006 237 2007 3610 2008 1318 2009 2664 2010 997 2011 6390 2012 2904 2013 7875 2014 3979 df.groupby('date').cid.nunique() date 2005 3 2006 10 2007 227 2008 52 2009 142 2010 57 2011 219 2012 99 2013 238 2014 146 Name: cid, dtype: int64
我尝试过的事情:
df.groupby([df['date']]).drop_duplicates(cols='cid')
AttributeError: Cannot access callable attribute 'drop_duplicates' of 'DataFrameGroupBy' objects, try using the 'apply' method
df.groupby(('date').drop_duplicates('cid'))
AttributeError: 'str' object has no attribute 'drop_duplicates'
您不需要groupby根据几列删除重复项,而可以指定一个子集:
df2 = df.drop_duplicates(["date", "cid"]) df2.groupby('date').cid.size() Out[99]: date 2005 3 2006 10 2007 227 2008 52 2009 142 2010 57 2011 219 2012 99 2013 238 2014 146 dtype: int64