2024-04-26 10:27:43 发布
网友
数据帧如下所示:
id year number 1 2016 3 1 2017 5 2 2016 1 2 2017 5 ...
我想提取groupby id和number column的值在2016年和2017年都大于3的行。你知道吗
例如,在上面的前4行中,结果是:
id year number 1 2016 3 1 2017 5
谢谢!你知道吗
>>> great_in_both_years = df.groupby("id").apply(lambda x: (x["number"] >= 3).all()) >>> great_in_both_years id 1 True 2 False dtype: bool >>> df.loc[lambda x: x["id"].map(great_in_both_years)] id year number 0 1 2016 3 1 1 2017 5
按>=3比较,并对与原始大小相同的序列使用^{},因此可能按^{}过滤:
>=3
df1 = df[(df["number"] >= 3).groupby(df["id"]).transform('all')] #alternative for reassign mask to column #df = df[df.assign(number= df["number"] >= 3).groupby("id")['number'].transform('all')] print (df1) id year number 0 1 2016 3 1 1 2017 5
或者使用^{},但如果数据帧较大或组较多:
df1 = df.groupby("id").filter(lambda x: (x["number"] >= 3).all())
按} ,因此可能按^{} 过滤:
>=3
比较,并对与原始大小相同的序列使用^{或者使用^{} ,但如果数据帧较大或组较多:
相关问题 更多 >
编程相关推荐