【发布时间】:2014-01-21 18:12:08
【问题描述】:
我正在尝试在另一列中添加包含字符串长度的 Pandas DataFrame 列。
csv = pd.read_csv('data/sentiments.csv', dtype=str)
csv['length'] = csv['text'].astype(str).apply(len)
csv.head()
text polarity length
0 -Mi hijo es tan rico que le regalo un BMW a su... NEUTRAL 64
1 The new BMW 3 Series is awarded 5 stars in the... POSITIVE 64
2 @GEAGarratt BMW hand over 200 + electric vehic... POSITIVE 64
3 I asked Sauber about more info or images of th... NEUTRAL 64
4 bmw >>> NEUTRAL 7
正如您在最后一列中看到的那样,它表示每一行的长度为 64。而另一方面,当我执行以下操作时:
len(csv.iloc[0]['text'])
它正确地将第一行的长度输出为 140。
怎么了?
【问题讨论】:
-
只是为了尝试一些事情,如果您将
apply的使用替换为map,是否会发生同样的错误,因为您希望将操作喷射到单个Series对象上? -
是的,不幸的是。
-
您能否提供一小段代码,让我们为前 5 行重建完全相同的数据帧?你能打印出
Series中的dtype是什么吗? -
如果你尝试
csv['text'].apply(lambda x: len(str(x)))会怎样? -
csv['text'].str.len()怎么样?
标签: python pandas type-conversion