使用python将字符串字段聚合到列表中

2024-04-26 23:17:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下熊猫数据框:

>>> df1[1:15]
      gene      beta
1    PALMD       NaN
2    PALMD       NaN
3    FRRS1  1.966503
4      AGL       NaN
5      AGL -4.082453
6      AGL  2.840288
7      AGL       NaN
8      AGL -4.909043
9      AGL       NaN
10     AGL  3.275433
11   SASS6       NaN
12   SASS6 -3.239315
13  TRMT13  3.434759
14  TRMT13  4.282222

我想创建一个变量,它将指示每个基因的所有β值是(1)该基因的所有β值均为正,(2)所有β值均为负,还是(3)混合。我会抛弃NaN,除非他们是特定基因的唯一类型。目标是:

>>> df1[1:15]
      gene   Direction
1    PALMD         NaN
2    FRRS1         Pos
3      AGL         Mix
4    SASS6         Neg
5   TRMT13         Pos

我试图通过基因聚合,但我得到了一个错误,可能是由于南。如果可能的话,我想保持作为熊猫数据帧的输出,因为我将不得不合并到另一个df在未来

>>> df1g = df1.groupby("gene")
>>> df1ga = df1g.agg(np.concatenate)
KeyError: 0L

谢谢


Tags: 数据pos类型基因nanbetadf1gene
1条回答
网友
1楼 · 发布于 2024-04-26 23:17:27

我会写一个小标签函数:

def label(ser):
    ser = ser.dropna()
    if ser.empty:
        return np.nan
    if (ser >= 0).all():
        return "Pos"
    if (ser < 0).all():
        return "Neg"
    return "Mix"

然后将其传递给groupby.agg以便于指定名称:

>>> labelled = df.groupby("gene")["beta"].agg({"Direction": label}).reset_index()
>>> labelled
     gene Direction
0     AGL       Mix
1   FRRS1       Pos
2   PALMD       NaN
3   SASS6       Neg
4  TRMT13       Pos

相关问题 更多 >