在pandas DataFrame中按列计算唯一字符串[关闭]

Posted

技术标签:

【中文标题】在pandas DataFrame中按列计算唯一字符串[关闭]【英文标题】:Count unique strings by column in pandas DataFrame [closed] 【发布时间】:2020-01-19 18:51:14 【问题描述】:

我需要找出我的四个唯一字符串之一在我的数据框的每一列中出现了多少次。

有谁知道适用于此的公式吗?

【问题讨论】:

使用value_counts 请在您的尝试中提供至少某种数据集,以便我们可以有一个最小的可重现示例。 ***.com/help/minimal-reproducible-example 【参考方案1】:

假设源DataFrame如下:

               Aaa                       Bbb               Ccc
0          Mad Max           Sleeping Beauty      Seven Dwarfs
1  Captain America     The Magnificent Seven         Absolvent
2        Toy Story  The Fast and the Furious         King Lion
3     The Fugitive                Robin Hood  The Seventh Seal

要查找的单词列表是(我将其缩短为 2 个):

words = ['the', 'seven']

然后,要生成结果,运行:

pd.DataFrame([ [wrd] + [ df[col].str.extractall(f'(\\bwrd\\b)',
    flags=re.I).size for col in df.columns ] for wrd in words ],
    columns=['Word', *df])

注意正则表达式中的\b(单词边界锚),在 要寻找的词。 这样可以确保如果您查找单词 the,将会找到所有 只是 the 的情况,省略例如thereAthena 等词 等等。

还要注意re.I 标志,以执行不区分大小写的搜索(您必须 重新导入)。

对于我的示例数据,结果是:

    Word  Aaa  Bbb  Ccc
0    the    1    3    1
1  seven    0    1    1

【讨论】:

【参考方案2】:

给定以下数据框:

df = pd.DataFrame(
    'B': ['a', 'a', 'c', 'd', 'a'],
    'C': ['aa', 'bb', '', 'dd', 'do'],
)
   B   C
0  a  aa
1  a  bb
2  c  cb
3  d  dd
4  a  do

value_counts方法统计'B'列中所有值的出现次数:

df.B.value_counts()

a    3
d    1
c    1

【讨论】:

【参考方案3】:

value_counts docs

但是,该函数仅适用于系列,因此您需要找到一种方法在您想要唯一值计数的列中实现它。

This example for value counts of entire df

【讨论】:

以上是关于在pandas DataFrame中按列计算唯一字符串[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pandas 数据框中按列值分组

Pandas:将系列添加到按列排序的 DataFrame

python Pandas - 按列对DataFrame排序

Pandas Dataframe 按列排序[重复]

使用 pandas.DataFrame.to_csv() 按列输出不同的精度?

Pandas 按列将 CSV 拆分为多个 CSV(或 DataFrame)