在Pandas中应用LEFT、RIGHT、MID的8种方法

2021年9月19日23:50:23 发表评论 3,667 次浏览

有时,你可能需要提取字符串中的特定字符。然后,你可以在Pandas中应用 Left、Right 和 Mid 的概念来获取字符串中所需的字符。

Pandas如何使用LEFT、RIGHT?在本教程中,你将看到以下 8 个描述如何提取特定字符的场景:

  1. LEFT
  2. RIGHT
  3. MID
  4. 符号前
  5. 前一个空格
  6. 一个符号后
  7. 相同符号之间
  8. 不同符号之间

在 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 文档找到许多有关处理文本数据的示例。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: