大家好,我想在我的代码中实现这个函数的问题。假设我正在处理这个数据框架。
df = pd.DataFrame([[100, 1],[100, 1],[200, 2],[200, 2],[200, 2]], columns=['a','b'])
现在我想首先计算列“a”的唯一条目,然后过滤选择只有“a”列中大于3的那些元素
group=df.groupby('a').count()
filter=group['b'].isin([3])
所需的输出是一个列表,它只包含满足过滤条件的系列“a”的那些元素(名为“filter”),因此从这个新功能中可以过滤回初始过滤器以便我将仅保留2,3,4行(从零开始计算)。
我希望我的意图很明确,但当然如果我从错误的观点来看问题,欢迎提出任何建议。
答案 0 :(得分:0)
IIUC,我认为你没有足够的测试数据来测试“大于3”,但你可以测试“大于2”。
df[df.groupby('a')['a'].transform('count').gt(2)]
输出:
a b
2 200 2
3 200 2
4 200 2
答案 1 :(得分:0)
In [1]: import pandas as pd
In [2]: df = pd.DataFrame([[100, 1],[100, 1],[200, 2],[200, 2],[200, 2]], columns=['a','b'])
In [3]: pd.concat([i[1] for i in df.groupby('a') if len(i[1]) >2 ])
Out[3]:
a b
2 200 2
3 200 2
4 200 2