說我有一個數據框dfimport pandas as pddf = pd.DataFrame({"id":["a", "b", "aa", "aaa", "bbb", "a"]})在這種情況下,我想計算列 id 的字符串長度計數。在這個例子中id,長度為 1 的字符串有 3 個,長度為 2 的字符串有 1 個,長度為 3 的字符串有 2 個。所以我想要一個反映這些信息的表str_length count1 32 13 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 count1 1 32 2 13 3 2
3 回答

楊魅力
TA貢獻1811條經驗 獲得超6個贊
一個麻木的解決方案:
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 count
0 1 3
1 2 1
2 3 2

哈士奇WWW
TA貢獻1799條經驗 獲得超6個贊
使用 groupby 和計數。
(
df.groupby(by=df.id.apply(len))
.id.count()
.to_frame('count')
.rename_axis(index='str_length')
.reset_index()
)
str_length count
0 1 3
1 2 1
2 3 2
添加回答
舉報
0/150
提交
取消