pandas 如何选择一个组合,使所选数据点的数量最大化,前提是列必须与所有行的值匹配

rhfm7lfc  于 2023-01-04  发布在  其他
关注(0)|答案(1)|浏览(77)

假设我有一个如下所示的 Dataframe :

A B C D E F G H 
1 0 1 0 1 1 1 1
0 1 1 1 1 0 0 0
1 0 1 0 0 0 0 0
1 1 0 1 1 1 1 1
1 1 1 1 1 1 1 1

我想选择数据点的最大数量,条件是当其他选定列为1时,所有数据点都为1。我们也可以修剪行以获得此结果,但目标是获得尽可能多的数据点(其中数据点定义为 Dataframe 中的一个项目/单元格)

jaxagkaj

jaxagkaj1#

预期的输出不清楚,但是可以使用聚合来标识相似的列并计算1的总数:

out = (df.T
   .assign(count=df.sum())
   .reset_index()
   .groupby(list(df.index))
   .agg({'index': list, 'count': 'sum'})
)

输出:

index  count
0 1 2 3 4                  
0 1 0 1 1     [B, D]      6
1 0 0 1 1  [F, G, H]      9
1 0 1 1 1        [A]      4
1 1 0 1 1        [E]      4
1 1 1 0 1        [C]      4

然后,您可以获得给出最大计数的列:

out.loc[out['count'].idxmax(), 'index']

输出:['F', 'G', 'H']

相关问题