有时,你可能需要提取字符串中的特定字符。然后,你可以在Pandas中应用 Left、Right 和 Mid 的概念来获取字符串中所需的字符。
Pandas如何使用LEFT、RIGHT?在本教程中,你将看到以下 8 个描述如何提取特定字符的场景:
- 从LEFT
- 从RIGHT
- 从MID
- 符号前
- 前一个空格
- 一个符号后
- 相同符号之间
- 不同符号之间
现在让我们回顾一下仅获取左侧数字的第一种情况。
场景 1:从左侧提取字符
Pandas应用LEFT、RIGHT、MID:假设你有以下 3 个字符串:
Identifier |
55555-abc |
77777-xyz |
99999-mmm |
由于你只想从左侧提取五位数字,因此你可以将str[:5]的语法应用于 'Identifier' 列,Pandas使用LEFT、RIGHT、MID的示例如下:
import pandas as pddata = https://www.lsbin.com/{'Identifier': [
'55555-abc','77777-xyz','99999-mmm']}
df = pd.DataFrame(data, columns= [
'Identifier'])
left = df[
'Identifier'].str[
:5]print (left)
运行Python 代码后,你将只获得左侧的数字:
055555
177777
299999
场景 2:从右侧提取字符
在这种情况下,目标是从右边获得五位数字:
Identifier |
ID-55555 |
ID-77777 |
ID-99999 |
import pandas as pddata = https://www.lsbin.com/{'Identifier': [
'ID-55555','ID-77777','ID-99999']}
df = pd.DataFrame(data, columns= [
'Identifier'])
right = df[
'Identifier'].str[
-5:]print (right)
这将确保你将获得右侧的五位数:
055555
177777
299999
场景 3:从中间提取字符
在某些情况下,你可能需要从字符串的中间提取数据:
Identifier |
ID-55555-End |
ID-77777-End |
ID-99999-End |
import pandas as pddata = https://www.lsbin.com/{'Identifier': [
'ID-55555-End','ID-77777-End','ID-99999-End']}
df = pd.DataFrame(data, columns= [
'Identifier'])
mid = df[
'Identifier'].str[
3:8]print (mid)
只会检索字符串中间的五位数字:
055555
177777
299999
场景 4:在符号之前
假设你要获取破折号 ('-') 之前的所有数字:
Identifier |
111-IDAA |
2222222-IDB |
33-IDCCC |
- str.split('-') – 你需要将符号放在括号内。在我们的例子中,它是破折号
- str[0] – 你需要在其中放置 0 以从左侧获取字符
import pandas as pddata = https://www.lsbin.com/{'Identifier': [
'111-IDAA','2222222-IDB','33-IDCCC']}
df = pd.DataFrame(data, columns= [
'Identifier'])
before_symbol = df[
'Identifier'].str.split('-').str[
0]print (before_symbol)
结果:
0111
12222222
233
场景 5:在一个空间之前
【在Pandas中应用LEFT、RIGHT、MID的8种方法】如果字符串中有空格怎么办?
Identifier |
第111话 |
2222222 国际开发银行 |
33 IDCCC |
import pandas as pddata = https://www.lsbin.com/{'Identifier': [
'111 IDAA','2222222 IDB','33 IDCCC']}
df = pd.DataFrame(data, columns= [
'Identifier'])
before_space = df[
'Identifier'].str.split(' ').str[
0]print (before_space)
只会获得左边的数字:
0111
12222222
233
场景 6:在一个符号之后
Pandas应用LEFT、RIGHT、MID:你可能还面临这样的情况:你希望获取变长字符串的符号(例如破折号)后的所有字符:
Identifier |
IDAA-111 |
IDB-2222222 |
IDCCC-33 |
import pandas as pddata = https://www.lsbin.com/{'Identifier': [
'IDAA-111','IDB-2222222','IDCCC-33']}
df = pd.DataFrame(data, columns= [
'Identifier'])
after_symbol = df[
'Identifier'].str.split('-').str[
1]print (after_symbol)
这是 Python 的输出:
0111
12222222
233
场景 7:相同符号之间
Pandas如何使用LEFT、RIGHT?现在,如果要检索变长字符串的两个相同符号(例如破折号)之间的值,该怎么办:
Identifier |
IDAA-111-AA |
IDB-2222222-B |
IDCCC-33-CCC |
- str.split('-')
- p [1]
import pandas as pddata = https://www.lsbin.com/{'Identifier': [
'IDAA-111-AA','IDB-2222222-B','IDCCC-33-CCC']}
df = pd.DataFrame(data, columns= [
'Identifier'])
between_two_symbols = df[
'Identifier'].str.split('-').str[
1]print (between_two_symbols)
你将获得两个破折号之间的所有数字:
0111
12222222
233
场景 8:不同符号之间
Pandas应用LEFT、RIGHT、MID:对于最后一个场景,目标是获取两个不同符号(破折号和美元符号)之间的数字:
Identifier |
IDAA-111 $ AA |
IDB-2222222$B |
IDCCC-33$CCC |
- 首先设置变量(即 between_two_different_symbols)获取破折号后的所有字符
- 然后,设置相同的变量以获取美元符号之前的所有字符
import pandas as pddata = https://www.lsbin.com/{'Identifier': [
'IDAA-111$AA','IDB-2222222$B','IDCCC-33$CCC']}
df = pd.DataFrame(data, columns= [
'Identifier'])
between_two_different_symbols = df[
'Identifier'].str.split('-').str[
1]
between_two_different_symbols = between_two_different_symbols.str.split('$').str[
0]print (between_two_different_symbols)
结果:
0111
12222222
233
结论 – Pandas中的LEFT、RIGHT、MID你刚刚看到了如何在 Pandas中应用 Left、Right 和 Mid。本教程中回顾的概念可以应用于大量不同的场景。
你可以通过访问Pandas 文档找到许多有关处理文本数据的示例。
推荐阅读
- 如何在python中读取excel(xlsx)文件(详细指南)
- 如何在Pandas DataFrame中将字符串转换为浮点数()
- win7系统恢复窗口动态缩放效果
- win7完全删除删除程序组件小妙招
- win7无线鼠标停顿的具体处理办法
- win7系统启用审核策略监控QQ办法
- win7加锁文件巧妙去锁的办法
- win7查看网站IP地址以防钓鱼网站
- 安装完win7后必须要做3件事