【问题标题】:Count the occurrenct of subelement in a pandas dataframe计算熊猫数据框中子元素的出现次数
【发布时间】:2023-03-13 16:44:02
【问题描述】:

我有一个类似的熊猫数据框

Tag
-----
c#|.net
javascript|html|React
python|docker

我要数groupby_tags={'c#','.net','python'}

如何在 python 中做到这一点?谢谢。

【问题讨论】:

  • 是的,我希望得到这样的输出。
  • @susaanne 你想知道有多少行包含c#,多少行包含python,等等...?
  • 是的,那我想我可以做一个 groupby
  • 为什么数据框中有这样的数据?这些行来自文件吗?我觉得您可能根本不需要这里的数据框。
  • @susanne,你想要一个多索引 groupby 之类的东西吗?

标签: python dataframe


【解决方案1】:

可以用 counter 和 itertools 链来完成

from itertools import chain
from collections import Counter

c = Counter(list(itertools.chain(*[i.split("|") for i in df["column-name"].tolist()])))
  1. df["column-name"].tolist()给你一个列表

  2. 在“|”处迭代和拆分列表中的每个条目给你一个进一步的清单。

  3. 你用 itertools 链接它来创建一个列表。

  4. 然后您可以使用集合模块中的计数器来获取所有项目的计数。

计数器包含总共有多少个c#、python、.net等标签。

groupby 的方法:

df[["A", "B"]] = df["column-name"].split("|", expand=True)

为该列提供一个数据框

>>> df
   col  A  B
0  a|b  a  b
1  c|d  c  d
2  a|c  a  c
3  b|d  b  d

从这里可以使用df.groupby(by=["A", "B"], level=0) 执行groupby

groupby 的另一种方法是explode 函数。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.explode.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2022-06-23
    • 1970-01-01
    相关资源
    最近更新 更多