Как я могу удалить всю строку, если столбец имеет более 10 символов, используя панд - PullRequest
0 голосов
/ 12 сентября 2018

Удалить всю запись, если столбец содержит более 10 символов, как я могу удалить всю эту запись.

Мой фрейм данных

Sl.no     name                 reason
1         sara                 hello 
2          ram                  how are you?
3          raghu                how do you do?
4          sai                   hey !!

Ожидаемый результат :

Sl.no     name                 reason
1         sara                 hello 
2          sai                 hey !!

Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Булево индексирование с пониманием списка эффективно:

df = df[[len(i) <= 10 for i in df['reason']]]

Но есть несколько других подходов:

df = pd.concat([df]*2000)

%timeit df['reason'].map(len).le(10)          # 2.32 ms per loop
%timeit df['reason'].str.len().le(10)         # 2.6 ms per loop
%timeit [len(i) <= 10 for i in df['reason']]  # 1.18 ms per loop
0 голосов
/ 12 сентября 2018

Я считаю, что нужно boolean indexing с перевернутой маской от > до <= и найти длины по Series.str.len:

df = df[df['reason'].str.len() <= 10]
print (df)
   Sl.no  name  reason
0      1  sara   hello
3      4   sai  hey !!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...