pandas select 行基于两个列值

pandas select rows based on two column values

我需要不同年份的同名值。如果一个名称值只存在一年,我需要减去它。

d = {

    'Name':['A','B','B','C','D','D',

            'E','E','E','F','G','G'],

    'Year':[2010,2010,2012,2010,2011,2011,2010,2010,2012,2014,2015,2016]

}

df = pd.DataFrame(d,columns=['Name','Year'])

df
    Name    Year
0   A   2010
1   B   2010
2   B   2012
3   C   2010
4   D   2011
5   D   2011
6   E   2010
7   E   2010
8   E   2012
9   F   2014
10  G   2015
11  G   2016

预期的 df 应该看起来像

Name    Year
1   B   2010
2   B   2012
7   E   2010
8   E   2012
10  G   2015
11  G   2016

试试这个:

df = df.drop_duplicates()
df = df[df['Name'].isin(df['Name'].value_counts()[df['Name'].value_counts()>=2].index)]

您可以使用 df.duplicatedkeep=False 参数来观察数据框中的所有重复项:

  df[df.duplicated(['Name'], keep=False)]