python - 根据组合条件过滤 Pandas 中的行

标签 python pandas

这里是 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":"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。

我想我应该制定一个公式并应用它,但我似乎找不到自己的方法。

最佳答案

使用nunique twice:获取唯一国家的数量n,并过滤只有唯一国家数量等于n

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

>>> print(s)
Year
2004    False
2005    False
2006    False
2007     True
2008     True
2009     True
2010     True
2011    False
2012    False
2013    False
Name: Country, dtype: bool

获取年份,

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

也可以使用set intersection

>>> set.intersection(*df.groupby('Country').Year.agg(set))
{2007, 2008, 2009, 2010}

关于python - 根据组合条件过滤 Pandas 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57562529/

相关文章:

python - 如何使用 Spark 函数 PySpark 将字符串转换为列表

python - 使用 ffmpeg 作为 Python 子进程的简单示例,以及转换上的 "checking in"

python - 来自列表字典的 DataFrame,其中列值为键

python - 如何进行 "multi-indexed"groupby

python - 机器学习中如何处理缺失数据?

python - "Driver is not defined"Python/ Selenium

Python MySQL 和 Django 问题

python - 如何在 pandas DataFrame 中找到每行的集合差异?

python - Pandas :drop_duplicates 有条件

Python Pandas 获取列的唯一计数