从 Pandas 数据框中删除值仅出现一次的行

nos*_*mas 7 python pandas

我有一个包含不同 ID 月度记录的数据框,我只需要对具有多个月记录的 ID 进行一些分析。

ID    Month       Metric1    Metric2
1     2018-01-01  4          3      
1     2018-02-01  3          2
2     2018-02-01  1          5
3     2018-01-01  4          2
3     2018-02-01  6          3
4     2018-01-01  3          1
Run Code Online (Sandbox Code Playgroud)

我将如何过滤出只出现一次的 ID 行并保留那些具有多行的行并得到类似的结果

ID    Month       Metric1    Metric2
1     2018-01-01  4          3      
1     2018-02-01  3          2
3     2018-01-01  4          2
3     2018-02-01  6          3
Run Code Online (Sandbox Code Playgroud)

我看过其他一些提到使用类似内容的页面:

df = df[df.groupby('ID').ID.transform(len) > 1]
Run Code Online (Sandbox Code Playgroud)

但我不想通过分组丢失每个月的指标。

WeN*_*Ben 7

更改lencount

df[df.groupby('ID').ID.transform('count') > 1]
Out[589]: 
   ID       Month  Metric1  Metric2
0   1  2018-01-01        4        3
1   1  2018-02-01        3        2
3   3  2018-01-01        4        2
4   3  2018-02-01        6        3
Run Code Online (Sandbox Code Playgroud)


ank*_*_91 6

尝试使用pd.series.duplicated()

df1=df[df.ID.duplicated(keep=False)]
print(df1)
Run Code Online (Sandbox Code Playgroud)
   ID       Month  Metric1  Metric2
0   1  2018-01-01        4        3
1   1  2018-02-01        3        2
3   3  2018-01-01        4        2
4   3  2018-02-01        6        3
Run Code Online (Sandbox Code Playgroud)