在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 的情况,省略例如there、Athena 等词
等等。
还要注意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中按列计算唯一字符串[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
python Pandas - 按列对DataFrame排序