import pandas as pd
import numpy as np s = pd.Series(['A', 'b', 'c', 'bbhello', '', np.nan, 'hj'])
df = pd.DataFrame({'key1': list('abcdef'),
'key2': ['hee', 'fv', 'w', 'hija', '', np.nan]})
print(s)
print('-'*8)
print(df)
print('-'*8)
'''
0 A
1 b
2 c
3 bbhello
4 123
5 NaN
6 hj
dtype: object
--------
key1 key2
0 a hee
1 b fv
2 c w
3 d hija
4 e 123
5 f NaN
--------
'''
# 直接通过.str调用字符串方法,可以对Series、DataFrame使用,自动过滤NaN值
print(s.str.count('b'))
'''
0 0.0
1 1.0
2 0.0
3 2.0
4 0.0
5 NaN
6 0.0
dtype: float64
'''
print(df['key2'].str.upper())
'''
0 HEE
1 FV
2 W
3 HIJA
4 123
5 NaN
Name: key2, dtype: object
'''
# 将所有的列名改为大写
df.columns = df.columns.str.upper()
print(df)
'''
KEY1 KEY2
0 a hee
1 b fv
2 c w
3 d hija
4 e 123
5 f NaN
'''
# 字符串常用方法 --lower,upper,len,starswith,endswith print('小写,lower()',s.str.lower())
print('大写,upper()',s.str.upper())
print('长度,len()',s.str.len())
print('判断起始是否为b,startswith()',s.str.startswith('b'))
print('判断结束是否为"o",endswith()',s.str.endswith('o'))
'''
小写,lower() 0 a
1 b
2 c
3 bbhello
4 123
5 NaN
6 hj
dtype: object
大写,upper() 0 A
1 B
2 C
3 BBHELLO
4 123
5 NaN
6 HJ
dtype: object
长度,len() 0 1.0
1 1.0
2 1.0
3 7.0
4 3.0
5 NaN
6 2.0
dtype: float64
判断起始是否为b,startswith() 0 False
1 True
2 False
3 True
4 False
5 NaN
6 False
dtype: object
判断结束是否为"o",endswith() 0 False
1 False
2 False
3 True
4 False
5 NaN
6 False
dtype: object
'''
# 字符串常用方法 --strip s2 = pd.Series([' jack', 'jill ', ' jesse '])
df2 = pd.DataFrame(np.random.randn(3, 2), columns=[' A ', ' B'], index=range(3))
print(s2)
print('-'*8)
print(df2)
print('-'*8)
'''
0 jack
1 jill
2 jesse
dtype: object
--------
A B
0 -0.333042 -0.467830
1 0.605179 -0.658910
2 -0.490881 -0.639754
--------
'''
print(s2.str.strip())
print('-'*8)
print(s2.str.lstrip())
print('-'*8)
print(s2.str.rstrip())
'''
0 jack
1 jill
2 jesse
dtype: object
--------
0 jack
1 jill
2 jesse
dtype: object
--------
0 jack
1 jill
2 jesse
dtype: object
'''
df2.columns = df2.columns.str.strip()
print(df2)
'''
A B
0 -0.801508 1.650113
1 -0.669556 -1.195999
2 0.277338 -0.727100 ''' # 字符串常用方法 -- replace()
df3 = pd.DataFrame(np.random.randn(3, 2), columns=[' A a', ' B b'], index=range(3))
df3.columns = df3.columns.str.replace(' ', '-', n=2)
print(df3)
'''
-A-a -B- b
0 -1.225938 0.296270
1 0.769037 2.794032
2 -1.686818 0.109314
'''
# 字符串常用方法 -- spilt、rsplit
s4 = pd.Series(['a,b,c', '1,2,3', ['a,,,c'], np.nan])
print(s4)
print(s4.str.split(','))
'''
0 a,b,c
1 1,2,3
2 [a,,,c]
3 NaN
dtype: object
0 [a, b, c]
1 [1, 2, 3]
2 NaN
3 NaN
dtype: object
'''
# 直接索引得到一个list
# 可以使用get或[]符号访问拆散列表中的元素
print(s4.str.split(',').str[0])
print(s4.str.split(',').str.get(0))
'''
0 a
1 1
2 NaN
3 NaN
dtype: object
0 a
1 1
2 NaN
3 NaN
dtype: object
''' # 可以使用expand可以轻松扩展此操作以返回DataFrame
# n 参数限制分割数
print(s4.str.split(','))
print('-' * 8)
print(s4.str.split(',', expand=True))
'''
0 [a, b, c]
1 [1, 2, 3]
2 NaN
3 NaN
dtype: object
--------
0 1 2
0 a b c
1 1 2 3
2 NaN NaN NaN
3 NaN NaN NaN
'''
print(s4.str.split(',', expand=True, n=1))
'''
0 1
0 a b,c
1 1 2,3
2 NaN NaN
3 NaN NaN
'''
# rsplit类似于split,反向工作,即从字符串的末尾到字符串的开头
print(s4.str.split(',', expand=True, n=1))
print('-' * 8)
print(s4.str.rsplit(',', expand=True, n=1))
'''
0 1
0 a b,c
1 1 2,3
2 NaN NaN
3 NaN NaN
--------
0 1
0 a,b c
1 1,2 3
2 NaN NaN
3 NaN NaN
''' df4 = pd.DataFrame({'key1': ['a,b,c', '1,2,3', [':,,, ']],
'key2': ['a-b-c', '1-2-3', [':-.- ']]})
print(df4)
print('-'*8)
print(df4['key2'].str.split('-'))
'''
key1 key2
0 a,b,c a-b-c
1 1,2,3 1-2-3
2 [:,,, ] [:-.- ]
--------
0 [a, b, c]
1 [1, 2, 3]
2 NaN
Name: key2, dtype: object
'''
# 通过索引获取分割后的元素
df4['k201'] = df4['key2'].str.split('-').str[0]
df4['k202'] = df4['key2'].str.split('-').str[1]
df4['k203'] = df4['key2'].str.split('-').str[2]
print(df4)
'''
key1 key2 k201 k202 k203
0 a,b,c a-b-c a b c
1 1,2,3 1-2-3 1 2 3
2 [:,,, ] [:-.- ] NaN NaN NaN
'''

最新文章

  1. javaScript获取url中的参数
  2. 多线程 or 多进程?[转]
  3. HUD 5086 Revenge of Segment Tree(递推)
  4. [UNIX环境高级编程](第三版)中apue.h的问题
  5. 中国海洋大学第四届朗讯杯高级组 Cash Cow(模拟)
  6. PPI是什么?如何计算?
  7. CheckBox和RadioButton以及RadioGroup
  8. unity 常用插件 2
  9. python之+=与+(转载)
  10. 了解C语言
  11. Codeforces 269C Flawed Flow (看题解)
  12. Java+selenium 如何定位下拉框select
  13. C语言应用操作之文件
  14. js-数组中查找特定元素并返回所有该元素的索引
  15. [洛谷P4705]玩游戏
  16. iOS 禁止多按钮同时响应
  17. vim 在 cmdline 内粘贴的方法
  18. “全栈2019”Java第六十七章:内部类、嵌套类详解
  19. JS的类型转换,强制转换和隐式转换
  20. EasyNVR摄像机无插件流媒体服务器对所在操作系统配置的需求

热门文章

  1. 最常用的~正则表达式-相关js函数知识简洁分享【新手推荐】
  2. 学生党的Surface Pro 5乞丐版使用体验
  3. HTML <input>标签属性
  4. DFS/BFS(同余模) POJ 1426 Find The Multiple
  5. 二分搜索 Codeforces Round #218 (Div. 2) C. Hamburgers
  6. 386 Lexicographical Numbers 字典序排数
  7. 专题七:UDP编程补充——UDP广播程序的实现
  8. servlet下的request&&response
  9. js中关于string转date类型的转换
  10. jdbc分页查询