遍历每一行并比较数据框的列值

时间:2019-12-05 14:27:18

标签: pandas dataframe

我有以下数据框。我想遍历每一行并比较分数列,如果该值大于等于cut_off列表中的值。

                         seq  score    status
7    TTGTTCTCTGTGTATTTCAGGCT  10.42  positive
56                 CAGGTGAGA   9.22  positive
64   AATTCCTGTGGACTTTCAAGTAT   1.23  positive
116                AAGGTATAT   7.84  positive
145                AAGGTAATA   8.49  positive
172                TGGGTAGGT   6.86  positive
204                CAGGTAGAG   7.10  positive
214  GCGTTTCTTGAATCCAGCAGGGA   3.58  positive
269                GAGGTAATG   8.73  positive
274  CACCCATTCCTGTACCTTAGGTA   8.96  positive
325                GCCGTAAGG   5.46  positive
356                GAGGTGAGG   8.41  positive
cut_off = range(0, 11)

到目前为止我尝试过的代码是:

cutoff_list_pos = []
number_list_pos = []

cut_off = range(0, int(new_df['score'].max())+1)

for co in cut_off:
    for df in df_elements:
        val = (df['score']>=co).value_counts()
        cutoff_list_pos.append(co)
        number_list_pos.append(val)

所需的输出是:

     cutoff  true  false
0          0            12.0            0
1          1            12.0            0
and so on..

如果分数大于等于cut_off中的值,则应将行指定为true,否则为false。

2 个答案:

答案 0 :(得分:0)

您可以使用keys的值在concat中使用参数cutoff_list_pos,然后按DataFrame.reset_index进行转置并将索引转换为列:

df = (pd.concat(number_list_pos, axis=1, keys=cutoff_list_pos, sort=False)
       .T
       .rename_axis('cutoff')
       .reset_index())

答案 1 :(得分:0)

另一种熊猫实现方式:

    token := jwt.NewWithClaims(
        jwt.SigningMethodHS256,
        claims,
    )
    ss, err := token.SignedString("thisisatestpassphraserighthere")
    if err != nil {
        panic("COULD_NOT_GENERATE")
        return
    }
    privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
    if err != nil {
        panic(err)
    }
    publicKey := &privateKey.PublicKey
    encrypter, err := jose.NewEncrypter(
        jose.A128CBC_HS256,
        jose.Recipient{Algorithm: jose.RSA_OAEP, Key: publicKey},
        nil,
    )
    if err != nil {
        return
    }
    object, err := encrypter.Encrypt([]byte(ss))
    if err != nil {
        errRes = s.Error(codes.Internal, err, nil)
        return
    }
    key, err := object.CompactSerialize()
    if err != nil {
        errRes = s.Error(codes.Internal, err, nil)
        return
    }
    fmt.Println(key)