You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中统计列字符串在另一列的出现次数?

嘿,这两个Pandas的统计需求我帮你搞定!下面分情况给你具体的实现方案,都是在Jupyter Notebook里能直接跑的代码~

需求一:检查某列字符串是否出现在另一列并计数

假设你的DataFrame名为df,需要检查的列是check_col,目标列是target_col。这里提供两种实现思路,优先推荐矢量化操作,效率更高:

方式1:矢量化批量处理(推荐)

不用手动遍历,利用Pandas的字符串方法就能批量完成检查,速度快还简洁:

import pandas as pd

# 先造个示例数据,你可以替换成自己的DataFrame
df = pd.DataFrame({
    'check_col': ['apple', 'banana', 'orange', 'grape'],
    'target_col': ['I like apple', 'Banana is yellow', 'Orange juice', 'No fruit here']
})

# 检查每行的check_col字符串是否在target_col中(加lower()是为了不区分大小写,不需要的话可以去掉)
df['is_present'] = df.apply(lambda row: row['check_col'].lower() in row['target_col'].lower(), axis=1)

# 统计符合条件的总次数
total_match_count = df['is_present'].sum()
print(f"总共有 {total_match_count} 个字符串出现在目标列中")

方式2:显式逐行遍历(适合自定义复杂逻辑)

如果你需要在遍历过程中加一些额外的判断逻辑,就用这种方式:

match_count = 0
for idx, row in df.iterrows():
    check_str = row['check_col']
    target_str = row['target_col']
    # 这里可以加自定义条件,比如区分大小写/部分匹配等
    if check_str in target_str:
        match_count += 1
print(f"匹配成功的总次数:{match_count}")
需求二:统计c2列每个完整字符串在c1列中的出现次数

这里重点是完整字符串匹配,不是子串匹配。我们可以先统计c1列的词频,再快速匹配c2的每个元素,效率拉满:

# 示例数据,替换成你的真实DataFrame即可
df = pd.DataFrame({
    'c1': ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'],
    'c2': ['apple', 'orange', 'grape', 'banana']
})

# 第一步:统计c1列中每个完整字符串的出现次数,转成字典方便查询
c1_frequency = df['c1'].value_counts().to_dict()

# 第二步:遍历c2列的所有唯一字符串(避免重复统计相同内容),输出结果
for string in df['c2'].unique():
    # 用get方法,不存在的字符串返回0
    occur_count = c1_frequency.get(string, 0)
    print(f"完整字符串 '{string}' 在c1列中出现了 {occur_count} 次")

如果你的c2列有重复的字符串,需要每个都打印结果(比如c2里有两个apple,要分别输出),那就直接遍历df['c2']:

for string in df['c2']:
    occur_count = c1_frequency.get(string, 0)
    print(f"完整字符串 '{string}' 在c1列中出现了 {occur_count} 次")

内容的提问来源于stack exchange,提问作者mapk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:25:28