在DataFrame中添加一个列,其值为另一列的值的长度。

16

我正在尝试获取另一列字符串值的字符计数列,但尚未找到有效的方法。

for index in range(len(df)):
    df['char_length'][index] = len(df['string'][index]))

显然需要首先创建一个空列,然后重写它,在我的数据集上需要很长时间。那么如何最有效地获得类似的结果呢?

'string'     'char_length'
abcd          4
abcde         5

我已经搜索了很多,但是我还没有弄清楚。

2个回答

21
Pandas有一个用于此目的的向量化字符串方法:`str.len()`。要创建新列,您可以编写:
df['char_length'] = df['string'].str.len()

例如:

>>> df
  string
0   abcd
1  abcde

>>> df['char_length'] = df['string'].str.len()
>>> df
  string  char_length
0   abcd            4
1  abcde            5

这应该比使用Python的for循环在DataFrame上进行循环要快得多。
Pandas引入了许多其他熟悉的字符串方法,例如lower(用于转换为小写字母),count用于计算特定子字符串的出现次数,以及replace用于交换一个子字符串与另一个子字符串。

1
这是一种实现方式。
In [3]: df
Out[3]:
  string
0   abcd
1  abcde

In [4]: df['len'] = df['string'].str.len()

In [5]: df
Out[5]:
  string  len
0   abcd    4
1  abcde    5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接