假设我有一个数据帧

df = pd.DataFrame({
    'column_1': ['ABC DEF', 'JKL', 'GHI  ABC', 'ABC ABC', 'DEF GHI', 'DEF', 'DEF DEF', 'ABC GHI DEF ABC'],
    'column_2': [9, 2, 3, 4, 6, 2, 7, 1 ]
})
df
          column_1  column_2
0          ABC DEF         9
1         GHI  ABC         3
2          ABC ABC         4
3          DEF GHI         6
4              DEF         2
5          DEF DEF         7
6  ABC GHI DEF ABC         1

我想计算我的每个正则表达式模式组在该列中出现的次数.

为了简单起见,假设模式是单词ABC and DEF,那么我需要计算所有行中的单词数.

预期输出:

          column_1  column_2    Group1_count   Group2_count
0          ABC DEF         9         1              1
1              JKL         9         0              0
2         GHI  ABC         3         1              0
3          ABC ABC         4         2              0
4          DEF GHI         6         0              1
5              DEF         2         0              1
6          DEF DEF         7         0              2
7  ABC GHI DEF ABC         1         2              1

这就是我try 的方法,但我不知道如何前进以获得计数值.

df['column_1'].str.extractall('(ABC)|(DEF)').groupby(level=0).first()

      0     1
0   ABC   DEF
2   ABC  None
3   ABC  None
4  None   DEF
5  None   DEF
6  None   DEF
7   ABC   DEF

对于这个问题,最好采用向量解/一线性方法. 还要注意,在本例中,为了简单起见,我使用了ABCDEF,但它也可以是一个复杂的正则表达式模式.

推荐答案

df = pd.DataFrame({'column_1': ['ABC DEF', 'GHI  ABC', 'ABC ABC', 'DEF GHI', 'XYZ', 'DEF DEF', 'ABC GHI DEF ABC'],
                   'column_2': [9, 3, 4, 6, 2, 7, 1]})
df = df.merge(df['column_1'].str.extractall('(ABC)|(DEF)').groupby(level=0).count(), how='outer', left_index=True,
              right_index=True).fillna(0).rename(columns={0: "Group1_count", 1: "Group2_count"}).astype(
    {"Group1_count": 'int32', "Group2_count": 'int32'})
print(df)

输出:

          column_1  column_2  Group1_count  Group2_count
0          ABC DEF         9             1             1
1         GHI  ABC         3             1             0
2          ABC ABC         4             2             0
3          DEF GHI         6             0             1
4              XYZ         2             0             0
5          DEF DEF         7             0             2
6  ABC GHI DEF ABC         1             2             1

Python相关问答推荐

OpenGL仅渲染第二个三角形,第一个三角形不可见

Odoo16:模板中使用的docs变量在哪里定义?

Cython无法识别Numpy类型

polars:有效的方法来应用函数过滤列的字符串

Python pint将1/华氏度转换为1/摄氏度°°

GPT python SDK引入了大量开销/错误超时

用fft计算指数复和代替求和来模拟衍射?

操作布尔值的Series时出现索引问题

Polars时间戳同步延迟计算

将鼠标悬停在海运`pairplot`的批注/高亮显示上

如何将参数名作为参数传入到函数中?

通过PyTorch中的MIN函数传递渐变

在Python Polar中从一个函数调用添加多个列

对齐多个叠置多面Seborn CAT图

如何从matplotlib中的Splter()中获取 colored颜色 条或图例?

字符串是批注序列[SEQUENCE[STR]]的有效类型吗?

如何reshape 极地数据帧?

提供不正确结果的Python IP验证

如何才能将文本文件分成多列,但仅限于特定的行?

卡方检验中的不同结果