Python 基于组合条件过滤熊猫中的行

Python 基于组合条件过滤熊猫中的行,python,pandas,Python,Pandas,这里没有人,所以请发发慈悲吧。 我有一个数据样本,其中每年的条目粘贴在下面: {"Country":{"0":"Italy","1":"Italy","2":"Italy","3":"Italy","4":"Italy","5":"Italy","6":"Italy","7":"France","8":"France","9":"France","10":"France","11":"France","12":"France","13":"Spain","14":"Spain","15":"Sp

这里没有人,所以请发发慈悲吧。 我有一个数据样本,其中每年的条目粘贴在下面:

{"Country":{"0":"Italy","1":"Italy","2":"Italy","3":"Italy","4":"Italy","5":"Italy","6":"Italy","7":"France","8":"France","9":"France","10":"France","11":"France","12":"France","13":"Spain","14":"Spain","15":"Spain","16":"Spain","17":"Spain","18":"Spain","19":"Spain"},"Year":{"0":2004,"1":2005,"2":2006,"3":2007,"4":2008,"5":2009,"6":2010,"7":2006,"8":2007,"9":2008,"10":2009,"11":2010,"12":2011,"13":2007,"14":2008,"15":2009,"16":2010,"17":2011,"18":2012,"19":2013},"Revenue":{"0":1000,"1":1200,"2":1300,"3":1400,"4":1450,"5":1300,"6":1200,"7":2200,"8":2100,"9":1900,"10":2300,"11":2400,"12":2500,"13":1150,"14":1230,"15":1300,"16":1200,"17":1050,"18":900,"19":950}}
我需要一种只过滤所有国家的普通年份的方法,例如2007年、2008年、2009年和2010年

我想我应该建立一个公式并应用它,但我似乎找不到我的方法。

使用两次:获取唯一国家的数量
n
,然后过滤年份,仅使用唯一国家的数量等于
n

n = df.Country.nunique()
s = df.groupby('Year').Country.nunique().eq(n)

为了得到这些年

>>> print(s[s].index)
[2007, 2008, 2009, 2010]

也可以使用

选项1
pivot
+
dropna

df.pivot('Year', 'Country', 'Revenue').dropna().index

选项2
crosstab
+
all

u = pd.crosstab(df.Year, df.Country)
u[u.all(1)].index

两者都产生:

Int64Index([2007, 2008, 2009, 2010], dtype='int64', name='Year')

是的,我正在寻找如何做到这一点,谢谢你的提示!:)
u = pd.crosstab(df.Year, df.Country)
u[u.all(1)].index
Int64Index([2007, 2008, 2009, 2010], dtype='int64', name='Year')