удаление строки из серии на основе длины символа с пониманием списка Python - PullRequest
1 голос
/ 21 января 2020

У меня есть этот ряд в кадре данных df :

column1                     column2   column3
needs n before mi toilets   2013      sport

Я хочу поместить строку в column1 с количеством символов ниже 4 раз, чтобы мой датафрейм будет выглядеть так:

column1               column2   column3
needs before toilets   2013      sport

Я попробовал список простых для l oop с этим кодом:

for i in df['column1'].str.split():
    for j in i:
        if len(j) < 4:
            df['column1'].drop(j)

, но я получил сообщение об ошибке:

"['n'] not found in axis"

Я также пытался упростить код для составления списка, но пока не получаю хорошего кода. Это моя попытка сделать это , но с выводом print (j) :

 [print(j) for i in df['column1'].str.split() for j in df['column1'] if len(j) < 4]

и я не получил возврата для этого кода.

У кого-либо есть идея почему? спасибо

Ответы [ 3 ]

1 голос
/ 21 января 2020

Использование pandas.Series.str.findall с join:

df['column1'].str.findall('\w{4,}').str.join(' ')

Вывод:

0    needs before toilets
Name: column1, dtype: object
0 голосов
/ 21 января 2020

Вот полное решение с использованием str join из pandas

df = pd.DataFrame(data = {"column1":["needs n before mi toilets"],"column2": 
                                     ["2013"],"column3": ["sport"]})
df["column1"] = df['column1'].str.findall('\w{4,}').str.join(' ')

. Теперь фрейм данных содержит обновленную строку в столбце column1

.
0 голосов
/ 21 января 2020
df['column1'] = ' '.join(j for i in df.column1 for j in i.split() if len(j)>4)

print(df)
          column1         column2 column3
0  needs before toilets     2013   sport
...