Добавление столбца DataFrame с помощью len() значений другого столбца

у меня проблема с попыткой получить столбец подсчета символов строковых значений в другом столбце, и я не понял, как это сделать эффективно.

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

это, по-видимому, включает в себя сначала создание столбца нулей, а затем его перезапись, и это занимает очень много времени в моем наборе данных. Так что самый эффективный способ получить что-то вроде

'string'     'char_length'
abcd          4
abcde         5

Я проверил довольно много, но я не смог понять это.

2 ответов


у Панды есть векторизованный строковый метод для этого: 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 петли.

многие другие знакомые строковые методы из Python были представлены панд. Например, lower (для преобразования в строчные буквы), count для подсчета вхождений определенного подстрока, и replace для замены одной подстроки на другую подстроку.


вот один из способов сделать это.

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