2024-10-06 07:43:22 发布
网友
在Pandas中,我希望按两列分组,并计算共享的第三列值的数量。加上对更多共享的偏好
在下面的数据框中,将col1值分组,col2值分组,并计算col2值共享col3值的频率
结果是:ID1&;ID2共享一个col3值(2)。ID3股份,无(1)。但是,ID1、ID2和ID4也共享一个值(3)。如ID1&;ID2已经共享了一个值—获取ID和更多ID共享的值(3)。因此答案是3,1。计数列表必须始终=nunique col2值
如果我理解正确,我认为您希望按col3而不是col2分组:
col3
col2
df = pd.read_html('https://stackoverflow.com/q/69419264/14277722')[0] df = df.groupby(['col1','col3'])['col2'].apply(list).reset_index() df['count'] = df['col2'].apply(len)
然后,您可以删除col2是另一行the following的子集的行:
arr = pd.get_dummies(df['col2'].explode()).max(level=0).to_numpy() subsets = np.matmul(arr, arr.T) np.fill_diagonal(subsets, 0) mask = ~np.equal(subsets, np.sum(arr, 1)).any(0) df = df[mask]
col1 col3 col2 count 0 A 12 [ID1, ID2, ID4] 3 3 A 18 [ID3] 1
如果我理解正确,我认为您希望按
col3
而不是col2
分组:然后,您可以删除
col2
是另一行the following的子集的行:相关问题 更多 >
编程相关推荐