如何计算特定列中的项目/值在 Pandas 数据帧的另一列/其他列中重复的次数?

everestial007

我有一个熊猫数据,如下所示:

MA1     MA2     MA3        Sp3              Sp4     Sp6            F1_x     F1_y
TgT,TgT   TgT,TgT       TgT,TgT,TgT   TgT,TgC           TgT,CgC    TgT,TgC,CgT,CgC     CgC     TgT
CgT       CgT,CgT,CgT   CgT,CgT       CgT,CgC,GgT,GgC   CgT,GgC    GgT,GgC,CgT         GgC      CgT
TgC       TgG,TgC       TgC           TgC,CgG           CgG,CgG    TgG,TgC             CgG      TgC

问题 01:

  • 我将读取F1_x 和 F1_y 中的字符串值,并想计算其他列中有多少 F1_x 与 y?
  • F1_x 的计数将首先写入,以管道 (|) 分隔。

输出:对于第一行将是

MA1  MA2     MA3      Sp3   Sp4   Sp6      F1_x    F1_y
0|2      0|2      0|3     0|1    1|1       1|1     CgC     TgT

问题 02:此外,我想创建另一个数据框,其中对M-type 与 S-type column进行计数

输出:对于第一行将是

        like_M      like_S
        x   y       x   y
         0|7         1|3

或者,

    like_M      like_S     F1_x    F1_y
    0|7         1|3        CgC     TgT

我尝试了一种使用 for-loop 的方法,该方法非常广泛,因为我的数据很大。我试图采用@piRSquared 在这个问题中给出的方法:How to read two lines from a file and create dynamics keys in a for-loop using python? 但是,无法解决。

海盗

考虑numpy基于辅助函数count_in

def count_in(clst, cols):
    cols = np.asarray(cols)
    c1 = np.core.defchararray.split(np.asarray(clst).astype(str), ',')
    l = np.array([len(i) for i in c1])
    s = np.concatenate(c1)
    r = np.arange(len(cols))
    c = (s[:, None] == cols[r.repeat(l)]).cumsum(0)

    z = np.zeros(cols.shape[1], dtype=int)
    counts = np.diff(np.vstack([z, c[l.cumsum() - 1]]), axis=0).astype(str)
    return pd.Series(counts.tolist(), clst.index).str.join('|')

然后 apply

cols = ['F1_x', 'F1_y']
d1 = df.drop(cols, 1).apply(count_in, cols=df[cols])
d1.join(df[cols])

   MA1  MA2  MA3  Sp3  Sp4  Sp6 F1_x F1_y
0  0|2  0|2  0|3  0|1  1|1  1|1  CgC  TgT
1  0|1  0|3  0|2  1|1  1|1  1|1  GgC  CgT
2  0|1  0|1  0|1  1|1  2|0  0|1  CgG  TgC

然后

d2 = d1.stack().str.split('|', expand=True).astype(int)
d3 = d2.groupby(
    [d2.index.get_level_values(0), d2.index.get_level_values(1).str[0]]
).sum()
pd.Series(
    d3.astype(str).values.tolist(), d3.index
).str.join('|').unstack().rename(columns='like_{}'.format).join(df[cols])

  like_M like_S F1_x F1_y
0    0|7    2|3  CgC  TgT
1    0|6    3|3  GgC  CgT
2    0|3    3|2  CgG  TgC

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从另一列计算pandas数据帧列中匹配项的数量?

来自分类Dev

将一列垂直合并到另一列中,并在Pandas中填充其他列的值

来自分类Dev

在pandas数据框中添加一列,该列是根据其他列的条件得出的另一列的平均值

来自分类Dev

根据Pandas数据框中的其他三列更改一列的值

来自分类Dev

根据Pandas数据框中的其他三列更改一列的值

来自分类Dev

计算列表中每个项目在pandas数据框列中出现的次数,用逗号分隔值,并附加其他列的汇总

来自分类Dev

在 Pandas 中创建一列,计算另一列中唯一值的数量

来自分类Dev

使用其他列的索引值在pandas数据框中的一列中进行字符串索引

来自分类Dev

根据另一列中的值对pandas数据框中的列进行归一化

来自分类Dev

根据另一列中的值对pandas数据框中的列进行归一化

来自分类Dev

pandas 返回数据帧中不在其他数据帧中的列

来自分类Dev

如何根据一列中的值对数据进行分类,并计算另一列中的出现次数(不包括R中的重复项)?

来自分类Dev

比较 Pandas 中的多个数据帧时在数据帧中创建一列

来自分类Dev

pandas - 根据另一列更改列中的值

来自分类Dev

绘制数据框中的一列作为 Pandas 中另一列的函数

来自分类Dev

计算另一列中重复数字的序列-Pandas

来自分类Dev

根据列表或另一列中的值在Pandas数据框中动态选择列

来自分类Dev

根据Pandas df中另一列中的最大值删除重复行

来自分类Dev

计算pandas数据框中的共存,以得到按其他列值分组的列值

来自分类Dev

根据一列的总和添加新列,并按Pandas中的其他2列分组

来自分类Dev

根据一列的总和添加新列,并按Pandas中的其他2列分组

来自分类Dev

检查一列是否包含来自pandas数据框中另一列的单词

来自分类Dev

根据另一列中的分组,将csv文件/ pandas数据帧拆分为多个文件

来自分类Dev

如何在Pandas数据框中的另一列中添加对特定值进行计数的计数器列?

来自分类Dev

在 Pandas 中,给定另一列的一组值,如何计算一列中一组值的概率?

来自分类Dev

如果另一列中的值为空,则删除重复项-Pandas

来自分类Dev

如何使用pandas根据同一行另一列中存在的数据修改一列的数据

来自分类Dev

查找特定列的最大值,但在 Pandas 中返回另一列

来自分类Dev

确定值在其他列中的时间之内在pandas列中更改的次数

Related 相关文章

  1. 1

    如何从另一列计算pandas数据帧列中匹配项的数量?

  2. 2

    将一列垂直合并到另一列中,并在Pandas中填充其他列的值

  3. 3

    在pandas数据框中添加一列,该列是根据其他列的条件得出的另一列的平均值

  4. 4

    根据Pandas数据框中的其他三列更改一列的值

  5. 5

    根据Pandas数据框中的其他三列更改一列的值

  6. 6

    计算列表中每个项目在pandas数据框列中出现的次数,用逗号分隔值,并附加其他列的汇总

  7. 7

    在 Pandas 中创建一列,计算另一列中唯一值的数量

  8. 8

    使用其他列的索引值在pandas数据框中的一列中进行字符串索引

  9. 9

    根据另一列中的值对pandas数据框中的列进行归一化

  10. 10

    根据另一列中的值对pandas数据框中的列进行归一化

  11. 11

    pandas 返回数据帧中不在其他数据帧中的列

  12. 12

    如何根据一列中的值对数据进行分类,并计算另一列中的出现次数(不包括R中的重复项)?

  13. 13

    比较 Pandas 中的多个数据帧时在数据帧中创建一列

  14. 14

    pandas - 根据另一列更改列中的值

  15. 15

    绘制数据框中的一列作为 Pandas 中另一列的函数

  16. 16

    计算另一列中重复数字的序列-Pandas

  17. 17

    根据列表或另一列中的值在Pandas数据框中动态选择列

  18. 18

    根据Pandas df中另一列中的最大值删除重复行

  19. 19

    计算pandas数据框中的共存,以得到按其他列值分组的列值

  20. 20

    根据一列的总和添加新列,并按Pandas中的其他2列分组

  21. 21

    根据一列的总和添加新列,并按Pandas中的其他2列分组

  22. 22

    检查一列是否包含来自pandas数据框中另一列的单词

  23. 23

    根据另一列中的分组,将csv文件/ pandas数据帧拆分为多个文件

  24. 24

    如何在Pandas数据框中的另一列中添加对特定值进行计数的计数器列?

  25. 25

    在 Pandas 中,给定另一列的一组值,如何计算一列中一组值的概率?

  26. 26

    如果另一列中的值为空,则删除重复项-Pandas

  27. 27

    如何使用pandas根据同一行另一列中存在的数据修改一列的数据

  28. 28

    查找特定列的最大值,但在 Pandas 中返回另一列

  29. 29

    确定值在其他列中的时间之内在pandas列中更改的次数

热门标签

归档