如何计算数据框所有行的列列表中包含的单词数和唯一单词数?

时间:2019-07-17 17:14:30

标签: python pandas

我在熊猫数据框中生成了列df['adjectives'],其中包含来自另一列df['reviews']的所有形容词的列表。

df['adjectives']的值采用这种格式,例如:

  

['excellent', 'better', 'big', 'unexpected', 'excellent', 'big']

我想创建一个新列,该列计算df['adjectives']中的单词总数以及df['adjectives']中的“唯一”单词数量。

该函数应该在整个数据帧中进行迭代,并为每一行应用计数。

对于上面的行示例,我希望df['totaladj']为6,df['uniqueadj']为4(因为重复了“ excellent”和“ big”)

import pandas as pd

df=pd.read_csv('./data.csv')

df['totaladj'] = df['adjectives'].str.count(' ') + 1

df.to_csv('./data.csv', index=False)

上面的代码在计算形容词的总数而不是唯一的形容词时有效。

1 个答案:

答案 0 :(得分:1)

这是您正在寻找的行为类型吗?

根据您的描述,我假设形容词列中的值是一个字符串,其格式类似于列表,例如“ ['大','优','小']”

下面的代码使用 split()将字符串转换为列表,然后使用 len()获得长度。查找唯一形容词的数量可以通过在使用 len()之前将列表转换为集合。

df['adjcount'] = df['adjectives'].apply(lambda x:  len(x[1:-1].split(',')))

df['uniqueadjcount'] =  df['adjectives'].apply(lambda x:  len(set(x[1:-1].split(','))))