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

如何在Pandas DataFrame中按行统计唯一Hashtag的出现行数?

解决按行去重统计Hashtag出现行数的问题

没问题,我来帮你搞定这个需求!你原来的代码统计的是所有Hashtag的总出现次数(包括同一行重复的),而你需要的是每个Hashtag在多少不同的行中出现,这就需要先对每行的标签去重,再统计。

具体解决方案

这里有个直观的实现方式,分两步走:

  1. 提取每行的所有唯一Hashtag(去掉同一行内的重复标签)
  2. 将这些行级的唯一标签展开,再统计每个标签出现的行数

代码如下:

import pandas as pd

# 你的示例数据
data = {'Posts': [
    "This is an example #tag1",
    "This too is an example #tag1 #tag2",
    "Yup, still an example #tag1 #tag1 #tag3"
]}
df = pd.DataFrame(data)

# 第一步:提取每行的唯一Hashtag
unique_tags_per_row = df['Posts'].str.findall(r'#\w+').apply(set).apply(list)

# 第二步:展开并统计行数
count_hashtags_by_row = unique_tags_per_row.explode().value_counts()

print(count_hashtags_by_row)

输出结果

运行后你会得到想要的统计:

#tag1    3
#tag2    1
#tag3    1
dtype: int64

代码解释

  • str.findall(r'#\w+'):从每行文本中提取所有符合格式的Hashtag,返回一个包含标签的列表
  • .apply(set):把每行的标签列表转成集合,自动去除同一行内的重复标签
  • .apply(list):把集合转回列表,方便后续的explode操作
  • .explode():将每行的标签列表拆分成单独的行,每个标签占一行
  • .value_counts():统计每个标签在不同行中出现的次数

如果你想更简洁,也可以把代码合并成一行:

count_hashtags_by_row = df['Posts'].str.findall(r'#\w+')\
    .apply(lambda x: pd.Series(x).unique())\
    .explode()\
    .value_counts()

这样就能完美得到你需要的按行去重后的Hashtag统计结果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:50:47