【问题标题】:pandas select rows based on two column values熊猫根据两列值选择行
【发布时间】:2021-08-05 05:53:30
【问题描述】:

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

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

【问题讨论】:

    标签: python pandas data-manipulation


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 它在名称列中给出非重复值但我需要不同年份的相同名称值
    • 我已经编辑了我的答案。请让我知道它是否有效@Robbods
    【解决方案2】:

    您可以使用 df.duplicated 和 keep=False 参数来查看数据框中的所有重复项:

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

    【讨论】:

    • 你试过这个解决方案了吗?请反馈。
    • 小时解决方案只在名称列中给出唯一值但我需要不同年份的相同名称值
    • 请反馈给我。
    猜你喜欢
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2015-10-23
    相关资源
    最近更新 更多