有时,你可能需要提取字符串中的特定字符。然后,你可以在Pandas中应用 Left、Right 和 Mid 的概念来获取字符串中所需的字符。
Pandas如何使用LEFT、RIGHT?在本教程中,你将看到以下 8 个描述如何提取特定字符的场景:
- 从LEFT
- 从RIGHT
- 从MID
- 符号前
- 前一个空格
- 一个符号后
- 相同符号之间
- 不同符号之间
在 Pandas 中查看 LEFT、RIGHT、MID
对于上述每个场景,目标是仅提取字符串中的数字。例如,对于“ 55555-abc ”字符串,目标是仅提取 55555 的数字。
现在让我们回顾一下仅获取左侧数字的第一种情况。
场景 1:从左侧提取字符
Pandas应用LEFT、RIGHT、MID:假设你有以下 3 个字符串:
Identifier |
55555-abc |
77777-xyz |
99999-mmm |
你可以使用Pandas DataFrame在 Python 中捕获这些字符串。
由于你只想从左侧提取五位数字,因此你可以将str[:5]的语法应用于 'Identifier' 列,Pandas使用LEFT、RIGHT、MID的示例如下:
import pandas as pd
data = {'Identifier': ['55555-abc','77777-xyz','99999-mmm']}
df = pd.DataFrame(data, columns= ['Identifier'])
left = df['Identifier'].str[:5]
print (left)
运行Python 代码后,你将只获得左侧的数字:
0 55555
1 77777
2 99999
场景 2:从右侧提取字符
在这种情况下,目标是从右边获得五位数字:
Identifier |
ID-55555 |
ID-77777 |
ID-99999 |
要实现此目标, 请将str[-5:]应用于 'Identifier' 列:
import pandas as pd
data = {'Identifier': ['ID-55555','ID-77777','ID-99999']}
df = pd.DataFrame(data, columns= ['Identifier'])
right = df['Identifier'].str[-5:]
print (right)
这将确保你将获得右侧的五位数:
0 55555
1 77777
2 99999
场景 3:从中间提取字符
在某些情况下,你可能需要从字符串的中间提取数据:
Identifier |
ID-55555-End |
ID-77777-End |
ID-99999-End |
要仅从中间提取数字,你需要指定所需字符的起点和终点。在这种情况下,起点是“3”,而终点是“8”,因此你需要按如下方式应用str[3:8]:
import pandas as pd
data = {'Identifier': ['ID-55555-End','ID-77777-End','ID-99999-End']}
df = pd.DataFrame(data, columns= ['Identifier'])
mid = df['Identifier'].str[3:8]
print (mid)
只会检索字符串中间的五位数字:
0 55555
1 77777
2 99999
场景 4:在符号之前
假设你要获取破折号 ('-') 之前的所有数字:
Identifier |
111-IDAA |
2222222-IDB |
33-IDCCC |
即使你的字符串长度发生变化,你仍然可以通过添加以下两个组件来检索左侧的所有数字:
- str.split('-') – 你需要将符号放在括号内。在我们的例子中,它是破折号
- str[0] – 你需要在其中放置 0 以从左侧获取字符
这是完整的 Python 代码:
import pandas as pd
data = {'Identifier': ['111-IDAA','2222222-IDB','33-IDCCC']}
df = pd.DataFrame(data, columns= ['Identifier'])
before_symbol = df['Identifier'].str.split('-').str[0]
print (before_symbol)
结果:
0 111
1 2222222
2 33
场景 5:在一个空间之前
如果字符串中有空格怎么办?
Identifier |
第111话 |
2222222 国际开发银行 |
33 IDCCC |
在这种情况下,只需在拆分中留一个空格: str.split(' '),Pandas使用LEFT、RIGHT、MID的示例:
import pandas as pd
data = {'Identifier': ['111 IDAA','2222222 IDB','33 IDCCC']}
df = pd.DataFrame(data, columns= ['Identifier'])
before_space = df['Identifier'].str.split(' ').str[0]
print (before_space)
只会获得左边的数字:
0 111
1 2222222
2 33
场景 6:在一个符号之后
Pandas应用LEFT、RIGHT、MID:你可能还面临这样的情况:你希望获取变长字符串的符号(例如破折号)后的所有字符:
Identifier |
IDAA-111 |
IDB-2222222 |
IDCCC-33 |
在这种情况下,你需要将 str[] 中的值调整为 1,以便从右侧获得所需的数字:
import pandas as pd
data = {'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 的输出:
0 111
1 2222222
2 33
场景 7:相同符号之间
Pandas如何使用LEFT、RIGHT?现在,如果要检索变长字符串的两个相同符号(例如破折号)之间的值,该怎么办:
Identifier |
IDAA-111-AA |
IDB-2222222-B |
IDCCC-33-CCC |
在这种情况下,设置:
- str.split('-')
- p [1]
因此,你的完整 Python 代码如下所示:
import pandas as pd
data = {'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)
你将获得两个破折号之间的所有数字:
0 111
1 2222222
2 33
场景 8:不同符号之间
Pandas应用LEFT、RIGHT、MID:对于最后一个场景,目标是获取两个不同符号(破折号和美元符号)之间的数字:
Identifier |
IDAA-111 $ AA |
IDB-2222222$B |
IDCCC-33$CCC |
为了实现这一目标:
- 首先设置变量(即 between_two_different_symbols)获取破折号后的所有字符
- 然后,设置相同的变量以获取美元符号之前的所有字符
这就是你编写代码的方式,Pandas使用LEFT、RIGHT、MID的示例:
import pandas as pd
data = {'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)
结果:
0 111
1 2222222
2 33
结论 – Pandas中的LEFT、RIGHT、MID
你刚刚看到了如何在 Pandas中应用 Left、Right 和 Mid。本教程中回顾的概念可以应用于大量不同的场景。
你可以通过访问Pandas 文档找到许多有关处理文本数据的示例。