麻烦在pandas对象列上调用`str.len`

时间:2017-06-23 14:32:56

标签: python pandas dataframe

我有一个带有名为title的字符串列的Pandas DataFrame,我希望将每行的条目转换为该字符串的长度。所以" abcd"将被转换为4等等。

我这样做:

result_df['title'] = result_df['title'].str.len()

但不幸的是,我收到了这个错误:

AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

这似乎暗示我的专栏中实际上没有字符串......

我应该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:2)

您要么尝试将整列转换为str而不是值,要么在列中具有混合类型。尝试:

result_df['title'] = result_df['title'].apply(lambda x: len(str(x)))

答案 1 :(得分:2)

如果您的列包含字符串和数字数据,您可以先将所有内容转换为字符串然后获取长度。

result_df['title'] = result_df['title'].astype(str).str.len()

要查找非字符串/ unicode的数据,请尝试以下操作:

result_df.loc[result_df['title'].apply(
    lambda x: not isinstance(x, (str, unicode))), 'title']