当前位置: 首页 > 面试题库 >

计算熊猫数据框中某些单词的出现

夹谷山
2023-03-14
问题内容

我想统计数据框中某些单词出现的次数。我知道使用“ str.contains”

a = df2[df2['col1'].str.contains("sample")].groupby('col2').size()
n = a.apply(lambda x: 1).sum()

目前,我正在使用上面的代码。是否有一种匹配正则表达式并获得出现次数的方法?就我而言,我有一个大的数据框,我想匹配大约100个字符串。


问题答案:

更新:原始答案计算包含子字符串的行。

要计算子字符串的所有出现次数,可以使用.str.count

In [21]: df = pd.DataFrame(['hello', 'world', 'hehe'], columns=['words'])

In [22]: df.words.str.count("he|wo")
Out[22]:
0    1
1    1
2    2
Name: words, dtype: int64

In [23]: df.words.str.count("he|wo").sum()
Out[23]: 4

str.contains方法接受正则表达式:

Definition: df.words.str.contains(self, pat, case=True, flags=0, na=nan)
Docstring:
Check whether given pattern is contained in each string in the array

Parameters
----------
pat : string
    Character sequence or regular expression
case : boolean, default True
    If True, case sensitive
flags : int, default 0 (no flags)
    re module flags, e.g. re.IGNORECASE
na : default NaN, fill value for missing values.

例如:

In [11]: df = pd.DataFrame(['hello', 'world'], columns=['words'])

In [12]: df
Out[12]:
   words
0  hello
1  world

In [13]: df.words.str.contains(r'[hw]')
Out[13]:
0    True
1    True
Name: words, dtype: bool

In [14]: df.words.str.contains(r'he|wo')
Out[14]:
0    True
1    True
Name: words, dtype: bool

要计算出现的次数,您可以对布尔系列求和:

In [15]: df.words.str.contains(r'he|wo').sum()
Out[15]: 2

In [16]: df.words.str.contains(r'he').sum()
Out[16]: 1


 类似资料:
  • 问题内容: 我有一个Pandas数据框,其中一列包含文本。我想获得一列出现在整列中的唯一单词的列表(空格是唯一的拆分)。 输出应如下所示: 获得计数也没有什么坏处,但这不是必需的。 问题答案: 使用来创建唯一元素的序列。 进行一些清理以使小写字母的字符串分解: 该列中的每个列表都可以传递给函数以获取唯一值。使用这样做: 或与from注释一起使用:

  • 问题内容: 我有一个OHLC价格数据集,该数据集已从CSV解析为Pandas数据框,并重新采样为15分钟的柱形: 我想添加各种计算的列,从简单的列开始,例如期间范围(HL),然后是布尔值以指示我将定义的价格模式的出现-例如锤形蜡烛模式,为其定义示例: 基本问题:如何将函数映射到列,特别是在我想引用多个其他列或整行或其他内容的地方? 这篇文章处理从单个源列添加两个计算列,这是很接近的,但还不完全是。

  • 使用pandas dataframe假设我有如下结构相似的数据帧: 我想要一个新的2列(Choise,Value),它满足“a_Cho”、“b_Cho”和“c_Cho”中所有值的以下条件 如果“a_Cho”=true,则选择“a_n”,值=a对应于“a_Cho”的值如果“a_Cho”=false,则移动到下一步 如果“b_Cho”=true,则选择“b_n”,值=b表示“b_Cho”的对应值,如果

  • 我想在我的数据的每一列中找到< code>NaN的数目。

  • 问题内容: 我有一个像这样的数据框(df): 如果具有肯定/相同和行,则这些行位于同一块中。在这种情况下,带有的行。我想将行拆分为块,并计算该块中的行数。如果行的长度不是6,则删除整个块,否则,保留该块。 我的粗略代码: 预期输出: 谢谢! 问题答案: 我认为,在和没有S,所以使用+ : 详情: 不幸的是真的很慢,因此如果需要更好的性能,请使用: 警告 给定组数,结果不能解决性能问题,这对于其中一

  • 问题内容: 我有一个数据框如下。 我正在阅读一个句子,并想用上面定义的同义词替换该句子中的单词。这是我的代码: 上面的代码将输入句子标记化。我想实现以下输出: 进 : 出 : 但是我得到的输出是 出 : 如果我跳过该函数,那么我的输出将没有问题,并且将分成单个单词。我试图了解我在函数中做错了什么。另外,请告知是否有更好的解决方案。 问题答案: 我会利用Pandas / NumPy索引。由于您的同义