Панды, усеките слишком длинную строку в столбце

#python #pandas #jupyter-notebook

Вопрос:

Я работаю с различными столбцами в csv-файле с записной книжкой pandas и jupyter, мне нужно было бы обрезать слишком длинную строку в столбце, например:

 test_column
abcde 1234 free foo row saw hello number ok by test
free foo row saw 1234 hello test
.....
 

Я бы хотел, чтобы остальные были усечены в столбце после 15 символов:

 test_column
abcde 1234 free  //---->after 15 charter
free foo row sa //---->after 15 charter
 

…..
я пытаюсь с

 df = df[df['test_column'].map(lambda x: len(str(x)) < 15)]
df
 

но, к сожалению, я удаляю целые строки длиной более 15, вместо того, чтобы усекать их!
как я мог бы это решить ?

спасибо ?

Ответ №1:

Просто сделай:

 res = df["test_column"].str[:15]
print(res)
 

Выход

 0    abcde 1234 free
1    free foo row sa
Name: test_column, dtype: object
 

В качестве альтернативного использования str.slice :

 res = df["test_column"].str.slice(stop=15)
 

Выход

 0    abcde 1234 free
1    free foo row sa
Name: test_column, dtype: object
 

Комментарии:

1. спасибо, быстро и любезно, кажется, это работает! но, вспомнив столбцы, я получаю эту ошибку: «Мы (временно) допускаем некоторые отсутствующие ключи с .loc, кроме как в» и следовать пунктам в столбце! Что случилось?

2. Что вы имеете в виду, говоря о колонках?

3. df=df[[«test_one»,»test_two»,»test_column»]] df возможно, я забыл сказать вам, что у меня много строк

4. Извините, но с предоставленной информацией я не могу помочь

5. Однако синтаксис работает правильно! Вероятно, проблема в том, что у меня большой объем данных … а пока, спасибо!