根据两列过滤熊猫数据框

Godrebh:

我正在尝试基于两列过滤熊猫数据框,以便对于第一列中的每个值只保留那些行,其中第二列是最小的。我知道这样听起来很混乱,所以这里有个例子:

> df = pd.DataFrame([{'a':'anno1', 'ppm':1},{'a':'anno1', 'ppm':2},{'a':'anno2', 'ppm':2},{'a':'anno2', 'ppm':2}])

> df
       a  ppm
0  anno1    1
1  anno1    2
2  anno2    2
3  anno2    2

我想要行0,2和3,因为对于anno1,最小值ppm1,对于anno2最小值ppm2(保持两行!)。所以我从一个开始groupby

> grouped_series = df.groupby(['a']).ppm.min()
> grouped_series
a
anno1    1
anno2    2

现在,我将每个值都a设为最小值ppm但是,如何使用该系列过滤原始数据帧?还是有更简单的方法来做到这一点?我尝试了以下几种变化:

new_df = df.loc[ df.loc[:,'ppm']==grouped_series.loc[df.loc[:,'a']] , :]

但这给了我一个 ValueError: Can only compare identically-labeled Series objects

耶斯雷尔:

使用GroupBy.transform最少值Series大小相同的像df,所以比较好的工作,也为筛选boolean indexingloc没有必要的:

new_df = df[df['ppm'] == df.groupby('a').ppm.transform('min')]
print (new_df)
       a  ppm
0  anno1    1
2  anno2    2
3  anno2    2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据列列表值过滤熊猫数据框

根据两列的组合过滤熊猫数据框

根据两列对熊猫数据框重新采样

根据多列条件过滤熊猫数据框行

如何根据条件过滤熊猫数据框?

如何根据其他列和其他条件过滤熊猫数据框并仅保留行

按两列过滤熊猫数据框,其中一列是列表

根据特定月份的值过滤熊猫数据框,并以另一列为条件

根据索引过滤熊猫数据框

熊猫根据日期范围和另一列过滤数据框

过滤熊猫数据框以根据列表下降

根据熊猫中两列的组合比较两个数据框

根据日期列熊猫过滤数据框

使用OR根据两列过滤数据框

通过汇总两列来过滤熊猫数据框

根据数据框熊猫中的列过滤器获取n行

根据两列中的值重塑熊猫数据框

分组并根据熊猫数据框中的其他列比较/过滤特定组

过滤熊猫数据框中的两列,其中一列代表通话时间

根据另一列的值按分位数过滤熊猫数据框

根据条件熊猫过滤数据框行

根据其他数据框过滤熊猫数据框列

根据它们的值组合熊猫数据框中的两列

如何根据两列对熊猫数据框进行分组?

如何过滤数据框并根据熊猫数据框中的另一列获取记录总数?

根据列中是否为真/假的相反条件过滤熊猫数据框

使用熊猫数据框根据过滤条件删除其中一列的方括号

根据其他数据框中的两列过滤数据框

有没有办法根据列表过滤熊猫数据框的所有列?