gpt4 book ai didi

python - 使用 Pandas ,如何按两列查找值计数

转载 作者:太空宇宙 更新时间:2023-11-04 04:06:08 25 4
gpt4 key购买 nike

我有一个包含三列的 Pandas 数据框,Protein_A、Protein_B、Interaction。 see it here

我想通过对 Protein_A 和 Protein_B 进行分组来找到作为值计数的所有相互作用。此外,将 Protein_A 和 Protein_B 分组时顺序无关紧要。

    Protein_A   Interaction      Protein_B
0 A1BG ER A2M
1 A1BG MI ABCC6
2 ABCC6 AS A1BG
3 A1BG MI ADAM10
4 A1BG MI ADAM17

结果看起来像这样:

{AB1G, A2M}     -> ER
{AB1G, ABCC6} -> MI, AS
{A1BG, ADAM10} -> MI
{A1BG, ADAM17} -> MI

最佳答案

我同意您想要对行进行分组,但预期结果显示您实际上想要一个列表,而不是为每个组计算交互代码。

要创建这样的列表(针对每个组),请按以下步骤操作:

从定义一个函数开始,该函数计算分组键- 蛋白质代码(A 和 B)的排序列表,转换为字符串:

def protSorted(key):
row = df.loc[key]
return ', '.join(sorted([row.Protein_A, row.Protein_B]))

然后通过这个函数对源DataFrame进行分组,进行Interaction来自每个组的列并创建交互代码列表:

df.groupby(protSorted).Interaction.apply(list)

对于您的示例数据,结果是如下所示的系列:

A1BG, A2M           [ER]
A1BG, ABCC6 [MI, AS]
A1BG, ADAM10 [MI]
A1BG, ADAM17 [MI]
Name: Interaction, dtype: object

或者,如果您希望每个组都有一个字符串(不带括号),改为运行:

df.groupby(protSorted).Interaction.apply(', '.join)

这次的结果是:

A1BG, A2M           ER
A1BG, ABCC6 MI, AS
A1BG, ADAM10 MI
A1BG, ADAM17 MI
Name: Interaction, dtype: object

关于python - 使用 Pandas ,如何按两列查找值计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57340695/

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