【问题标题】:Counting occurrence of a word in a column of a tsv file using python使用python计算tsv文件列中单词的出现次数
【发布时间】:2014-03-10 19:45:27
【问题描述】:

来自python初学者的问题!我有一个 tsv 文件,如下所示:

WHI5    YOR083W CDC28   YBR160W physical interactions   19823668
WHI5    YOR083W CDC28   YBR160W physical interactions   21658602
WHI5    YOR083W CDC28   YBR160W physical interactions   24186061
WHI5    YOR083W RPD3    YNL330C physical interactions   19823668
WHI5    YOR083W SWI4    YER111C physical interactions   15210110
WHI5    YOR083W SWI4    YER111C physical interactions   15210111

我想计算第[3]行中包含相同单词的所有行,并仅输出第一个具有新列中出现次数的行。

WHI5    YOR083W CDC28   YBR160W physical interactions   19823668    3
WHI5    YOR083W RPD3    YNL330C physical interactions   19823668    1
WHI5    YOR083W SWI4    YER111C physical interactions   15210110    2

到目前为止,我尝试了 'csv' 和 'Counter' 或 'pandas' 和 'Counter' 的组合,但没有成功......

【问题讨论】:

  • 您要查找的词是预定义的还是重复的?
  • 我正在寻找重复项

标签: python pandas counter tsv


【解决方案1】:

使用熊猫:

>>> import pandas as pd
>>> from io import BytesIO
>>> df = pd.read_table(BytesIO("""\
... col1 col2 col3 col4 col5 col6
... WHI5    YOR083W CDC28   YBR160W "physical interactions"   19823668
... WHI5    YOR083W CDC28   YBR160W "physical interactions"   21658602
... WHI5    YOR083W CDC28   YBR160W "physical interactions"   24186061
... WHI5    YOR083W RPD3    YNL330C "physical interactions"   19823668
... WHI5    YOR083W SWI4    YER111C "physical interactions"   15210110
... WHI5    YOR083W SWI4    YER111C "physical interactions"   15210111"""),
... delim_whitespace=True)

pandas 数据框如下所示:

>>> df
   col1     col2   col3     col4                   col5      col6
0  WHI5  YOR083W  CDC28  YBR160W  physical interactions  19823668
1  WHI5  YOR083W  CDC28  YBR160W  physical interactions  21658602
2  WHI5  YOR083W  CDC28  YBR160W  physical interactions  24186061
3  WHI5  YOR083W   RPD3  YNL330C  physical interactions  19823668
4  WHI5  YOR083W   SWI4  YER111C  physical interactions  15210110
5  WHI5  YOR083W   SWI4  YER111C  physical interactions  15210111

[6 rows x 6 columns]

要获得计数,请按col3 分组并取每个组的长度:

>>> df['cnt'] = df.groupby('col3')['col3'].transform(len)
>>> df
   col1     col2   col3     col4                   col5      col6 cnt
0  WHI5  YOR083W  CDC28  YBR160W  physical interactions  19823668   3
1  WHI5  YOR083W  CDC28  YBR160W  physical interactions  21658602   3
2  WHI5  YOR083W  CDC28  YBR160W  physical interactions  24186061   3
3  WHI5  YOR083W   RPD3  YNL330C  physical interactions  19823668   1
4  WHI5  YOR083W   SWI4  YER111C  physical interactions  15210110   2
5  WHI5  YOR083W   SWI4  YER111C  physical interactions  15210111   2

[6 rows x 7 columns]

从每组中选出第一个:

>>> df.groupby('col3').apply(lambda obj: obj.head(n=1))
         col1     col2   col3     col4                   col5      col6 cnt
col3
CDC28 0  WHI5  YOR083W  CDC28  YBR160W  physical interactions  19823668   3
RPD3  3  WHI5  YOR083W   RPD3  YNL330C  physical interactions  19823668   1
SWI4  4  WHI5  YOR083W   SWI4  YER111C  physical interactions  15210110   2

[3 rows x 7 columns]

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多