pandas:如何返回字符串列的字符串长度计数?

说我有一个数据框df


import pandas as pd

df = pd.DataFrame({"id":["a", "b", "aa", "aaa", "bbb", "a"]})

在这种情况下,我想计算列 id 的字符串长度计数。


在这个例子中id,长度为 1 的字符串有 3 个,长度为 2 的字符串有 1 个,长度为 3 的字符串有 2 个。所以我想要一个反映这些信息的表


str_length  count

1           3

2           1

3           2

对数百万行执行此操作的最有效方法是什么?


这是我能想到的最好的,但我听说使用apply很慢


df_count = df.id.apply(lambda x: len(x)).value_counts()

df_count2 = pd.DataFrame({"str_length": df_count.index.tolist(), "count": df_count})

df_count2.sort_values("str_length")

产生。


   str_length  count

1           1      3

2           2      1

3           3      2


一只甜甜圈
浏览 343回答 3
3回答

隔江千里

干得好df.id.str.len().value_counts()1    33    22    1Name: id, dtype: int64

杨魅力

一个麻木的解决方案:np.transpose(np.unique(df.id.map(len), return_counts=True))Out[229]:array([[1, 3],       [2, 1],       [3, 2]], dtype=int64)创建数据框pd.DataFrame(np.transpose(np.unique(df.id.map(len), return_counts=True)),              columns=['str_length', 'count'])Out[231]:   str_length  count0           1      31           2      12           3      2

哈士奇WWW

使用 groupby 和计数。(    df.groupby(by=df.id.apply(len))    .id.count()    .to_frame('count')    .rename_axis(index='str_length')    .reset_index())    str_length  count0   1           31   2           12   3           2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python