06-python-pandas-text
6. Pandas高级教程之:处理text数据
简介
在1.0之前,只有一种形式来存储text数据,那就是object。在1.0之后,添加了一个新的数据类型叫做StringDtype 。今天将会给大家讲解Pandas中text中的那些事。
创建text的DF
先看下常见的使用text来构建DF的例子:
如果要使用新的StringDtype,可以这样:
或者使用astype进行转换:
String 的方法
String可以转换成大写,小写和统计它的长度:
还可以进行trip操作:
columns的String操作
因为columns是String表示的,所以可以按照普通的String方式来操作columns:
分割和替换String
Split可以将一个String切分成一个数组。
要想访问split之后数组中的字符,可以这样:
使用 expand=True 可以 将split过后的数组 扩展成为多列:
可以指定分割列的个数:
replace用来进行字符的替换,在替换过程中还可以使用正则表达式:
String的连接
使用cat 可以连接 String:
使用 .str来index
pd.Series会返回一个Series,如果Series中是字符串的话,可通过index来访问列的字符,举个例子:
extract
Extract用来从String中解压数据,它接收一个 expand参数,在0.23版本之前, 这个参数默认是False。如果是false,extract会返回Series,index或者DF 。如果expand=true,那么会返回DF。0.23版本之后,默认是true。
extract通常是和正则表达式一起使用的。
上面的例子将Series中的每一字符串都按照正则表达式来进行分解。前面一部分是字符,后面一部分是数字。
注意,只有正则表达式中group的数据才会被extract .
下面的就只会extract数字:
还可以指定列的名字如下:
extractall
和extract相似的还有extractall,不同的是extract只会匹配第一次,而extractall会做所有的匹配,举个例子:
extract匹配到a1之后就不会继续了。
extractall匹配了a1之后还会匹配a2。
contains 和 match
contains 和 match用来测试DF中是否含有特定的数据:
String方法总结
最后总结一下String的方法:
Method | Description |
---|---|
cat() | Concatenate strings |
split() | Split strings on delimiter |
rsplit() | Split strings on delimiter working from the end of the string |
get() | Index into each element (retrieve i-th element) |
join() | Join strings in each element of the Series with passed separator |
get_dummies() | Split strings on the delimiter returning DataFrame of dummy variables |
contains() | Return boolean array if each string contains pattern/regex |
replace() | Replace occurrences of pattern/regex/string with some other string or the return value of a callable given the occurrence |
repeat() | Duplicate values (s.str.repeat(3) equivalent to x * 3) |
pad() | Add whitespace to left, right, or both sides of strings |
center() | Equivalent to str.center |
ljust() | Equivalent to str.ljust |
rjust() | Equivalent to str.rjust |
zfill() | Equivalent to str.zfill |
wrap() | Split long strings into lines with length less than a given width |
slice() | Slice each string in the Series |
slice_replace() | Replace slice in each string with passed value |
count() | Count occurrences of pattern |
startswith() | Equivalent to str.startswith(pat) for each element |
endswith() | Equivalent to str.endswith(pat) for each element |
findall() | Compute list of all occurrences of pattern/regex for each string |
match() | Call re.match on each element, returning matched groups as list |
extract() | Call re.search on each element, returning DataFrame with one row for each element and one column for each regex capture group |
extractall() | Call re.findall on each element, returning DataFrame with one row for each match and one column for each regex capture group |
len() | Compute string lengths |
strip() | Equivalent to str.strip |
rstrip() | Equivalent to str.rstrip |
lstrip() | Equivalent to str.lstrip |
partition() | Equivalent to str.partition |
rpartition() | Equivalent to str.rpartition |
lower() | Equivalent to str.lower |
casefold() | Equivalent to str.casefold |
upper() | Equivalent to str.upper |
find() | Equivalent to str.find |
rfind() | Equivalent to str.rfind |
index() | Equivalent to str.index |
rindex() | Equivalent to str.rindex |
capitalize() | Equivalent to str.capitalize |
swapcase() | Equivalent to str.swapcase |
normalize() | Return Unicode normal form. Equivalent to unicodedata.normalize |
translate() | Equivalent to str.translate |
isalnum() | Equivalent to str.isalnum |
isalpha() | Equivalent to str.isalpha |
isdigit() | Equivalent to str.isdigit |
isspace() | Equivalent to str.isspace |
islower() | Equivalent to str.islower |
isupper() | Equivalent to str.isupper |
istitle() | Equivalent to str.istitle |
isnumeric() | Equivalent to str.isnumeric |
isdecimal() | Equivalent to str.isdecimal |
本文已收录于 www.flydean.com
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
最后更新于