在python 3中查找表中名字第一个字符的频率分布

Posted

技术标签:

【中文标题】在python 3中查找表中名字第一个字符的频率分布【英文标题】:Find the frequency distribution of the first character of the name in the table in python 3 【发布时间】:2019-04-17 11:55:19 【问题描述】:

我有一张这样的桌子

key Name
 1   snake
 2   panda
 3   parrot
 4   catipie
 5   cattie

现在我想找到每行第一个字符的出现次数并按降序排序,如果有平局,它应该按词汇顺序排序,所以我的输出如下所示:

c 2
p 2
s 1

【问题讨论】:

【参考方案1】:

通过索引str[0] 选择第一个值并按value_counts 计数:

s = df['Name'].str[0].value_counts()
print (s)
p    2
c    2
s    1
Name: Name, dtype: int64

对于DataFrame 添加rename_axisreset_index

df = df['Name'].str[0].value_counts().rename_axis('first').reset_index(name='count')
print (df)
  first  count
0     p      2
1     c      2
2     s      1

如果需要按字母排序相同的计数添加sort_values:

df = df.sort_values(['first','count'], ascending=[True, False])
print (df)
  first  count
1     c      2
0     p      2
2     s      1

对于系列:

s = df.set_index('first')['count']
print (s)
first
c    2
p    2
s    1
Name: count, dtype: int64

最后使用to_string

print (s.to_string(header=None))
c    2
p    2
s    1

【讨论】:

谢谢@jezrael,这给了我一个想法。我想将其输出为一个没有任何列名的系列,如果有平局,则应按降序排序并按词法升序 p 在 panda , p 在 parrot , p 在 catipie, 使它成为 3 谢谢 :) 但它在我的测试集上失败了。你能检查一下吗 @Mighty - 什么测试? 让我们continue this discussion in chat。

以上是关于在python 3中查找表中名字第一个字符的频率分布的主要内容,如果未能解决你的问题,请参考以下文章

excel表中怎么在一列名字中查找一个名字,并返回同一行相邻列里的数据

6-2 单链表元素定位 (12 分)

python第二部分

Python - 字典查找每个字符的频率是不是很慢?

OBIEE:在数据透视表中查找频率

在Java中使用哈希映射来查找字符串中字符的频率[关闭]