Добавление столбца 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