阅读 122

Pandas 文本处理操作实例

在本章中,我们将使用基本的Series / Index讨论字符串操作。在随后的章节中,我们将学习如何在DataFrame上应用这些字符串函数。

Pandas提供了一组字符串函数,可以轻松地对字符串数据进行操作。最重要的是,这些函数忽略(或排除)缺少的/ NaN值。

几乎所有这些方法都可用于Python字符串函数(请参阅: https://docs.python.org/3/library/stdtypes.html#string-methods)。因此,将Series对象转换为String对象,然后执行该操作。

我们看看每个操作如何执行。

方法说明
lower()将系列/索引中的字符串转换为小写。
upper()将系列/索引中的字符串转换为大写。
len()计算字符串length()。
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   Tom0             0         0      0     11             1         0      0     02             0         0      1     03             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            Tom1   William Rick   William Rick2                  JohnJohn3                  Alber@tAlber@tdtype: 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


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐