我希望通过将列减少为只有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/