【问题标题】:How can I count occurrences of a string in a dataframe in Python?如何计算 Python 数据框中字符串的出现次数?
【发布时间】:2020-06-19 01:28:10
【问题描述】:

我正在尝试计算数据框列中的船只数量。在这种情况下,我试图计算 77H 的数量。我可以对单个元素执行此操作,但对整个列的操作似乎不起作用

例如这适用于我的数据框中的单个元素

df = pd.DataFrame({'Route':['Callais','Dover','Portsmouth'],'shipCode':[['77H','77G'],['77G'],['77H','77H']]})
df['shipCode'][2].count('77H')

但是当我尝试使用任一

对每一行执行操作时
df['shipCode'].count('77H')
df['shipCode'].str.count('77H')

两次尝试都失败了,非常感谢任何有关如何编码的帮助

谢谢

【问题讨论】:

标签: python dataframe


【解决方案1】:

如果你做了这样的事情呢?

假设您的初始字典...

import pandas as pd
from collections import Counter
df = pd.DataFrame(df) #where df is the dictionary defined in OP

您可以为每行列表中的所有元素生成Counter,如下所示:

df['counts'] = df['shipCode'].apply(lambda x: Counter(x))

输出:

        Route    shipCode                counts
0     Callais  [77H, 77G]  {'77H': 1, '77G': 1}
1       Dover       [77G]            {'77G': 1}
2  Portsmouth  [77H, 77H]            {'77H': 2}

或者如果你特别想要一个,即'77H',你可以这样做:

 df['counts'] = df['shipCode'].apply(lambda x: Counter(x)['77H'])

输出:

        Route    shipCode  counts
0     Callais  [77H, 77G]       1
1       Dover       [77G]       0
2  Portsmouth  [77H, 77H]       2

甚至使用第一种方法(每行中的完整计数器):

[count['77H'] for count in df['counts']]

输出:

[1, 0, 2]

【讨论】:

  • 非常感谢!正是我想要的
【解决方案2】:

数据框有一个带有值列表的shipcode 列。

首先显示一个 True 或 False 值以识别在shipcode 列中包含字符串“77H”的行。

> df['shipcode'].map(lambda val: val.count('77H')>0)

现在根据上一步中获得的 True/False 值过滤数据框。

> df[df['shipcode'].map(lambda val: val.count('77H')>0)]

最后,使用 python len 方法获取数据框中所有值的计数,其中船码列表包含匹配“77H”的值。

> len(df[df['shipcode'].map(lambda val: val.count('77H')>0)])

另一种便于记住分析内容的方法是在同一数据框中创建一列来存储真/假值。然后按真/假值过滤。真的和上面一样,但我觉得更漂亮一点。

> df['filter_column'] = df['shipcode'].map(lambda val: val.count('77H')>0)
> len(df[df['filter_column']])

祝你好运,享受使用 Python 和 Pandas 处理数据的过程!

【讨论】:

  • 哦,天哪!我没有注意到您要求提供发生的总次数。我以为您正在寻找包含 shipcode 列中 77H 值的行数。
猜你喜欢
  • 1970-01-01
  • 2021-08-02
  • 2020-09-23
  • 2017-11-11
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
相关资源
最近更新 更多