pandas计算某列每行带有分隔符的数据中包含特定值的次数

某次做一个数据的处理,要计算用户的粉丝数量,数据集大概是这样的:

传播节点微博用户id关注用户idsae26e5e3db7626dcaf6819ce5492d534″04e9dc04d4b600d574d67b298a7dea7d,···”a845733e3729a136889c07d275bcc3c5″aebe49645667a02eae6ab6734ade24eb,···”68e605feb5344fd413587b4245946c24″77c471d3aba195b1322800602a93dc72,···”

这里的数据,都是经过脱敏处理后的id,即每个用户和他们的关注列表。”关注用户ids”应该是字符串类型,每一行由双引号包裹,由逗号作为id之间的分隔符。要计算用户的粉丝数量,就是看他们在所有用户的关注列表当中出现了多少次,也就是要对”关注用户ids”列出现的各个id进行计数。

参考博文进行以下处理

countN = dataI0['name'].str.split('|', expand=True).stack().value_counts()

其中,不能对数据框的列Chart3Part[‘关注用户ids’]直接应用split,而需要先调用str。

  • 其中的expand=True是按逗号对每一行进行分割后,将其扩展成多列。
  • stack()则是构造二级行索引,在原本的行索引上,将列作为二级行索引。可参考博文,也可见下文当中的实验三
  • value_counts()是对值出现的次数进行计数,其返回值是一个pd.Series,name为被计数的列的名字,index为被计数的项,值为出现的次数

博文当中还有另一种方法,先单独对每一行进行处理,再从总的视角进行计数

countN = pd.Series(Counter([y for x in dataI0['name'] for y in x.split('|')]))

完整的示例如下:

import pandas as pd

dataI0 = pd.DataFrame(data=["book","fish","icecream|book","fish","campfire|book"],columns=["name"])
print(dataI0)

countN = dataI0['name'].str.split('|', expand=True).stack().value_counts()
print(countN)

from collections import Counter

countN = pd.Series(Counter([y for x in dataI0['name'] for y in x.split('|')]))
print(countN)

countN = dataI0['name'].str.split('|')
print(countN)

countN = dataI0['name'].str.split('|', expand=True)
print(countN)

countN = dataI0['name'].str.split('|', expand=True).stack()
print(countN)

countN = [y for x in dataI0['name'] for y in x.split('|')]
print(countN)

countN = Counter([y for x in dataI0['name'] for y in x.split('|')])
print(countN)

countN = pd.Series([y for x in dataI0['name'] for y in x.split('|')])
print(countN)

countN = pd.Series([y for x in dataI0['name'] for y in x.split('|')]).value_counts()
print(countN)

Original: https://blog.csdn.net/weixin_52202311/article/details/118818092
Author: JxWang05
Title: pandas计算某列每行带有分隔符的数据中包含特定值的次数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678775/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球