gpt4 book ai didi

python - Pandas:当组中的值落在某个范围内时,将组保留在数据中

转载 作者:行者123 更新时间:2023-12-01 09:12:23 25 4
gpt4 key购买 nike

我有一个组中的值,如果该值在 5 到 25 的范围内,那么我想将该组保留在数据中。

基于Pandas: remove group from the data when a value in the group meets a required condition ,我这样写:

dfnew = df.groupby('groupname').filter(lambda x: (x['column2']>=5) & (x['column2']<=25))

当我使用这个时,出现以下错误: filter function returned a Series, but expected a scalar bool

然后我也尝试过:

dfnew = df.groupby('groupname').filter(lambda x: 5<= x['column2']<=25)

但它给出了错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

然后我尝试了:

dfnew = df.groupby('groupname').filter(lambda x: (x['column2'].any()>=5) & (x['column2'].any()<=25))

它只返回一个带有列名称的空数据框

我对 python 和数据科学非常陌生(实际上编码了几天)。请解释一下这是怎么回事并帮忙!太感谢了!!

最佳答案

我想你已经快到了。您需要使用 maxmin 来测试组中的值。这是一个玩具数据集的示例。

首先是数据:

import pandas as pd

data = pd.DataFrame(
{
'id': [1, 2, 3] * 3,
'value': [3, 20, 21, 6, 24, 7, 21, 8, 50]
}
)

data

这给了我们:

    id  value
0 1 3
1 2 20
2 3 21
3 1 6
4 2 24
5 3 7
6 1 21
7 2 8
8 3 50

然后使用组/过滤模式仅保留组中最小值大于或等于 5,且组中最大值小于或等于 25 的组。在这种情况下,我们预计仅返回第 2 组。

data.groupby('id').filter(lambda x: (x['value'].max() <= 25) & (x['value'].min() >= 5))

这就是我们得到的:

id  value
1 2 20
4 2 24
7 2 8

关于python - Pandas:当组中的值落在某个范围内时,将组保留在数据中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51548873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com