#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. Однако синтаксис работает правильно! Вероятно, проблема в том, что у меня большой объем данных … а пока, спасибо!