繁体   English   中英

使用 Python 的列的平均字长

[英]Average word length of a column using Python

这是我的专栏:

ReviewText
Absolutely wonderful silky and..
Love this dress! it is so pretty...
I had such high hopes for...

我想创建一个名为 Avg_length 的新列,其中包括 ReviewText 列中单词的平均长度......

我编写了以下代码以在每个空格之后拆分字符串:

df['Avg_length'] = df["Review Text"].apply(lambda x: len(x.split()))

现在如何计算平均值?

提前致谢...

您的代码正在计算单词的数量而不是每个单词的长度。

import numpy as np
...
df['Avg_length'] = df["Review Text"].apply(lambda x: np.mean([len(w) for w in x.split()]))

Review Text 列中的行元素是代表整个句子/评论的字符串。 所以当匿名的lambda function被应用时,lambda ZC1C425Z074E68384F11的x输入就是整句AB。

调用 x.split() 会生成单词列表。 列表理解

[len(w) for w in x.split()]

获取该单词列表并对其进行迭代,因此变量 w 被设置为一个接一个的单词。 对于每个单词 w,评估字符数,即 len(w)。 列表推导返回每个单词的长度列表,即每个单词的字符数。 因此,列表推导的结果只是一个数字列表。

np.mean() 用一个数字替换这个数字列表,这个数字是它们的平均值。 这个数字是 lambda function 的最终 output 并被放入为该行构造的新列中。 这对所有行重复。

尝试这个:

假设平均长度 = 否。 字数/没有。 句子

df['Avg_length'] = df["Review Text"].apply(lambda x: len(x.split())/len(x.split('.')))

或者,如果您假设平均长度 = 否。 字数/没有。 不包括空格的字符然后:

df['Avg_length'] = df["Review Text"].apply(lambda x: len(x.split())/len(''.join(x.split())))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM