2024-05-15 16:54:19 发布
网友
喂,我需要把注意力集中在一张桌子里的特定群体上
举个例子:
groups col1 A 3 A 4 A 2 A 1 B 3 B 3 B 4 C 2 D 4 D 3
我只想显示包含3和4但没有其他数字的组。 我应该得到:
groups col1 B 3 B 3 B 4 D 4 D 3
使用df.loc[]然后按正常逻辑进行搜索应该是可行的
df.loc[]
import pandas as pd data = [['A', 3], ['A', 4], ['A', 2], ['A', 1], ['B', 3], ['B', 3], ['B', 4], ['C', 2], ['D', 4], ['D', 3]] df = pd.DataFrame(data, columns=["col1", "col2"]) df = df.loc[df["col2"] >= 3] print(df.head())
这里有两种可能的方法-通过^{}测试值以获得成员资格,然后通过^{}和^{}获得所有具有所有True的组,最后通过^{}过滤:
True
df1 = df[df['col1'].isin([3,4]).groupby(df['groups']).transform('all')] print (df1) groups col1 4 B 3 5 B 3 6 B 4 8 D 4 9 D 3
另一种方法是首先获取所有组的值,其中NOT包含值3,4,然后传递给另一个带反转掩码的isin函数:
NOT
3,4
isin
df1 = df[~df['groups'].isin(df.loc[~df['col1'].isin([3,4]), 'groups'])] print (df1) groups col1 4 B 3 5 B 3 6 B 4 8 D 4 9 D 3
我们也可以使用^{}:
new_df=df.groupby('groups').filter(lambda x: x.col1.isin([3,4]).all() ) print(new_df) groups col1 4 B 3 5 B 3 6 B 4 8 D 4 9 D 3
从lambda函数中删除Series.isin的替代方法:
Series.isin
df['aux']=df['col1'].isin([3,4]) df.groupby('groups').filter(lambda x: x.aux.all()).drop('aux',axis=1)
使用
df.loc[]
然后按正常逻辑进行搜索应该是可行的这里有两种可能的方法-通过^{} 测试值以获得成员资格,然后通过^{} 和^{} 获得所有具有所有} 过滤:
True
的组,最后通过^{另一种方法是首先获取所有组的值,其中
NOT
包含值3,4
,然后传递给另一个带反转掩码的isin
函数:我们也可以使用^{} :
从lambda函数中删除
Series.isin
的替代方法:相关问题 更多 >
编程相关推荐