Pandas groupby,过滤并将输出放入列表中
Pandas groupby, filter and put the output in a list
大家好,我想在我的代码中实现这个函数有问题。假设我正在处理这个数据框。
df = pd.DataFrame([[100, 1],[100, 1],[200, 2],[200, 2],[200, 2]], columns=['a','b'])
现在我想先计算列 "a" 的唯一条目,然后过滤 select 仅列 "a" 中大于 3
的那些元素
group=df.groupby('a').count()
filter=group['b'].isin([3])
所需的输出是一个列表,其中仅包含满足过滤条件(名为 "filter")的系列 "a" 中的那些元素,因此可以从这个新功能中过滤回来初始过滤器,这样我将只保留第 2、3、4 行(从零开始计数)。
我希望我的意图是明确的,但当然如果我从错误的角度处理问题,欢迎任何建议。
IIUC,我认为你没有足够的测试数据来测试"bigger than 3",但是你可以测试"bigger than 2"。
df[df.groupby('a')['a'].transform('count').gt(2)]
输出:
a b
2 200 2
3 200 2
4 200 2
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
大家好,我想在我的代码中实现这个函数有问题。假设我正在处理这个数据框。
df = pd.DataFrame([[100, 1],[100, 1],[200, 2],[200, 2],[200, 2]], columns=['a','b'])
现在我想先计算列 "a" 的唯一条目,然后过滤 select 仅列 "a" 中大于 3
的那些元素group=df.groupby('a').count()
filter=group['b'].isin([3])
所需的输出是一个列表,其中仅包含满足过滤条件(名为 "filter")的系列 "a" 中的那些元素,因此可以从这个新功能中过滤回来初始过滤器,这样我将只保留第 2、3、4 行(从零开始计数)。
我希望我的意图是明确的,但当然如果我从错误的角度处理问题,欢迎任何建议。
IIUC,我认为你没有足够的测试数据来测试"bigger than 3",但是你可以测试"bigger than 2"。
df[df.groupby('a')['a'].transform('count').gt(2)]
输出:
a b
2 200 2
3 200 2
4 200 2
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