我在熊猫数据框中生成了列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)
上面的代码在计算形容词的总数而不是唯一的形容词时有效。
答案 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(','))))