English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Обработка текста Pandas

Примеры операций с текстом Pandas

В этой главе мы будем использовать базовые Series / Index для обсуждения операций со строками. В последующих главах мы изучим, как применять эти строковые функции к DataFrame.

Pandas предоставляет набор функций строк, которые позволяют легко обрабатывать строковые данные. Важно отметить, что эти функции игнорируют (или исключают) отсутствующие/NaN значения.

Почти все эти методы можно использовать для функций строк Python (см.: https://docs.python.org/3/library/stdtypes.html#string-methods) Следовательно, преобразуйте объект Series в объект String, а затем выполните эту операцию.

Посмотрим, как выполняется каждая операция.

МетодОписание
lower()Преобразует строки в серия/индексе к нижнему регистру.
upper()Преобразует строки в серия/индексе к верхнему регистру.
len()Вычисляет длину строки.
strip()Помогает удалить пробелы (включая переводы строк) с обеих сторон каждой строки из серии/индекса.
split(' ')Разделяет каждую строку по заданному шаблону.
cat(sep=' ')/td>Соединяет элементы серии/индекса с помощью заданного разделителя.
get_dummies()Возвращает DataFrame с уникальными кодированными значениями.
contains(pattern)Если подстрока содержится в элементе,则为每个元素返回布尔值True,否则返回False。
replace(a,b)a值替换成b。
repeat(value)以指定的次数重复每个元素。
count(pattern)返回每个元素中模式出现的次数。
startswith(pattern)如果系列/索引中的元素以模式开头,则返回true。
endswith(pattern)如果系列/索引中的元素以模式结尾,则返回true。
find(pattern)返回模式首次出现的第一个位置。
findall(pattern)返回所有出现的模式的列表。
swapcase大小写互换
islower()<检查“系列/索引”中每个字符串中的所有字符是否都小写。返回布尔值
isupper()检查“系列/索引”中每个字符串中的所有字符是否都大写。返回布尔值。
isnumeric()检查“系列/索引”中每个字符串中的所有字符是否都是数字。返回布尔值。

我们来创建一个Series,看看以上所有功能如何工作。

 import pandas as pd
 import numpy as np
 s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveSmith'])
 print s

Результат выполнения:

 0 Tom
 1 William Rick
 2 John
 3 Alber@t
 4 NaN
 5 1234
 6 Steve Smith
 dtype: object

lower()

 import pandas as pd
 import numpy as np
 s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveSmith'])
 print s.str.lower()

Результат выполнения:

 0 tom
 1 william rick
 2 john
 3 alber@t
 4 NaN
 5 1234
 6 steve smith
 dtype: object

upper()

 import pandas as pd
 import numpy as np
 s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveSmith'])
 print s.str.upper()

Результат выполнения:

 0 TOM
 1 WILLIAM RICK
 2 JOHN
 3 ALBER@T
 4 NaN
 5 1234
 6 STEVE SMITH
 dtype: object

len()

 import pandas as pd
 import numpy as np
 s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveSmith'])
 print s.str.len()

Результат выполнения:

 0 3.0
 1 12.0
 2 4.0
 3 7.0
 4 NaN
 5 4.0
 6 10.0
 dtype: float64

strip()

 import pandas as pd
 import numpy as np
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print s
 print ("After Stripping:")
 print s.str.strip()

Результат выполнения:

 0 Tom
 1 William Rick
 2 John
 3 Alber@t
 dtype: object
 After Stripping:
 0 Tom
 1 William Rick
 2 John
 3 Alber@t
 dtype: object

split(pattern)

 import pandas as pd
 import numpy as np
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print s
 print ("Split Pattern:")
 print s.str.split(' ')

Результат выполнения:

 0 Tom
 1 William Rick
 2 John
 3 Alber@t
 dtype: object
 Split Pattern:
 0 [Tom, , , , , , , , , , ]
 1 [, , , , , William, Rick]
 2 [John]
 3 [Alber@t]
 dtype: object

cat(sep=pattern)

 import pandas as pd
 import numpy as np
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print s.str.cat(sep='_')

Результат выполнения:

   Tom _ William Rick_John_Alber@t

get_dummies()

 import pandas as pd
 import numpy as np
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print s.str.get_dummies()

Результат выполнения:

   William Rick Alber@t John Tom
0 0 0 0 0 1
1 1 0 0 0 0
2 0 0 1 0 0
3 0 0 1 0 0

contains ()

 import pandas as pd
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print s.str.contains(' ')

Результат выполнения:

 0  True
 1  True
 2 False
 3 False
 dtype: bool

replace(a,b)

 import pandas as pd
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print s
 print ("After replacing @ with $:")
 print s.str.replace('@',')
 )

Результат выполнения:

 0 Tom
 1 William Rick
 2 John
 3 Alber@t
 dtype: object
 After replacing @ with $:
 0 Tom
 1 William Rick
 2 John
 3 Alber$t
 dtype: object

repeat(value)

 import pandas as pd
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print s.str.repeat(2)

Результат выполнения:

0 Tom Tom
1 William Rick William Rick
2 John
3 Alber$t
dtype: object

count(pattern)

 import pandas as pd
  
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print ("每个字符串中的“m”数:")
 print s.str.count('m')

Результат выполнения:

 每个字符串中的“m”数:
 0 1
 1 1
 2 0
 3 0

startswith(pattern)

 import pandas as pd
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print ("Strings that start with 'T':")
 print s.str. startswith ('T')

Результат выполнения:

 0  True
 1 False
 2 False
 3 False
 dtype: bool

endswith(pattern)

 import pandas as pd
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print ("Strings that end with 't':")
 print s.str.endswith('t')

Результат выполнения:

 Strings that end with 't':
 0 False
 1 False
 2 False
 3  True
 dtype: bool

find(pattern)

 import pandas as pd
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print s.str.find('e')

Результат выполнения:

 0 -1
 1 -1
 2 -1
 3 3
 dtype: int64

“-1”, означает, что элемент не содержит соответствия.

findall(pattern)

 import pandas as pd
 s = pd.Series(['Tom ', '  William Rick', 'John', 'Alber@t'])
 print(s.str.findall('e'))

Результат выполнения:

 0 []
 1 []
 2 []
 3 [e]
 dtype: object

Пустой список ([]), означает, что элемент не содержит соответствия

swapcase()

 import pandas as pd
 s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
 print(s.str.swapcase())

Результат выполнения:

 0 TOM
 1 WILLIAM RICK
 2 JOHN
 3 ALBER@T
 dtype: object

islower()

 import pandas as pd
 s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
 print(s.str.islower())

Результат выполнения:

 0 False
 1 False
 2 False
 3 False
 dtype: bool

isupper()

 import pandas as pd
 s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
 print(s.str.isupper())

Результат выполнения:

 0 False
 1 False
 2 False
 3 False
 dtype: bool

isnumeric()

 import pandas as pd
 s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t'])
 print(s.str.isnumeric())

Результат выполнения:

 0 False
 1 False
 2 False
 3 False
 dtype: bool