pandas - 在一个列中,python 如何获取每个元素的长度

  显示原文与译文双语对照的内容

在csv文件中,有一列叫做"no_pun"。 里面有一些被标记的词。 我想获取此列中每个元素的长度。 在 python 中很容易。 但我有一个错误。

错误:

对于范围( 0,len ( 数据 ['no_pun'] ) 中的i ): 数据 ["len_desc"] [i] = len ( 数据 ["no_pun"] [i] )





KeyError Traceback (most recent call last)


/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)


 2655 try:


-> 2656 return self._engine.get_loc(key)


 2657 except KeyError:



pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()



pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()



pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()



pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()



KeyError: 'len_desc'



在处理上述异常期间,出现了另一个异常:

时间:

不要使用 range()len() 来做循环,而是使用构建的python 迭代语法。 你可以说


for row in data['no_pun']:


 # do something with row



迭代 data['no_pun'] 中的所有项

在这种情况下,你似乎尝试将值分配给列表中不存在的键,在本例中。

调查数据的内容,看看所有项目是否有len_desc密钥,我期望至少缺少一个项目。

data["len_desc"] 可能未初始化为列表。 你可能希望在运行函数之前先设置它。 但是,更好的方法是使用列表理解插件:data["len_desc"] = [len(data]) for data in data["no_pun"]]

...