我希望通过将列减少为只有1个唯一值的列来过滤数据框。

采取以下数据框:

df = pd.DataFrame({'id':[4, 5],
                     'id2':[4, 4],
                      'prod':['prod1', 'prod1'],
                      'amount':[45.0, 45.0],
                      'date':['2018-06-06', '2018-05-06'],
                      'region':['east', 'east']})


我想按id2进行分组,然后删除唯一值大于1的所有列。

df
   amount        date  id  id2   prod region
0    45.0  2018-06-06   4    4  prod1   east
1    45.0  2018-05-06   5    4  prod1   east


输出应如下所示:

   amount  id2   prod region
0    45.0    4  prod1   east
1    45.0    4  prod1   east

最佳答案

您需要groupby,然后查找唯一值等于1的列。

col = (df.groupby(['id2']).nunique() == 1).any()
df[col.index[col]]


输出:

  id2   prod    amount  region
0   4   prod1   45.0    east
1   4   prod1   45.0    east

关于python - 在groupby中筛选仅适用于python列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51029861/

10-12 23:30