【问题标题】:How to get the number of times a piece if word is inside a particular column in pandas?如果单词在熊猫的特定列中,如何获取一块的次数?
【发布时间】:2018-04-28 23:53:41
【问题描述】:

我将尝试用一个简单的例子来描述我的问题。

我有一个包含许多列的 csv 文件。此列的标题之一是“名称”。

在此列“名称”中,我只需要重复名称“约翰”的次数。

例如,我的“名称”列如下:

names
John
John M
Mike John
Audrey
Andrew

对于这种情况,我需要一个使用 pandas 的 python 脚本来获取 3 的值,因为单词“John”重复了 3 次。

这些是我正在使用的代码:

from_csv = pd.read_csv(r'csv.csv', usecols = ['names'] , index_col=0, header=0 )

times = from_csv.query('names == "John"').names.count()

但它只返回 1,因为只有一行只有 John。

我尝试过使用:

times = from_csv.query('names == "*John*"').names.count()

但没有成功。

对于这种特殊情况,如何获得 3?谢谢

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:

    使用str.contains

    df.Name.str.contains('John').sum()
    Out[246]: 3
    

    或者我们使用listmapin

    sum(list(map(lambda x : 'John' in x,df.Name)))
    Out[248]: 3
    

    【讨论】:

    • @ananvodo yw :-) 快乐编码
    【解决方案2】:

    您可以使用pandas.Series.str.count 计算每行中遇到模式的次数。

    df.names.str.count('John').sum()
    
    3
    

    在本例中,它匹配 OP 的输出。但是,如果John 在一行中出现多次,则会产生不同的结果。假设我们有这个df

    df
    
                     names
    0            John John
    1        John M John M
    2  Mike John Mike John
    3        Audrey Audrey
    4        Andrew Andrew
    

    然后我的答案就产生了

    df.names.str.count('John').sum()
    
    6
    

    当温的回答产生时

    df.names.str.contains('John').sum()
    
    3
    

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2019-10-09
      • 2021-05-08
      • 2018-08-10
      • 2021-07-12
      相关资源
      最近更新 更多