是否有正则表达式可以从字符串中提取单个字母?
Is there a regex expression to extract a single letter from a string?
我想从 pandas 数据框列中的值中提取字符并将它们存储在新列中。
import pandas as pd
df = pd.DataFrame({'a': ['ABC12345X3423','DEF54321Y34333','GACZY31343Z3432'], 'b': [4,5,6]})
df
a b
0 ABC12345X3423 4
1 DEF54321Y34333 5
2 GACZY31343Z3432 6
以下代码有效,但我使用 2 个提取命令来提取字符串中嵌入的单个字符(当您从右到左阅读时)。
df['c'] = df['a'].str.extract('(^\D+)', expand=False).str.strip()
df['d'] = df['a'].str.extract('([A-Z]\d+\Z)', expand=False).str.strip()
df['d'] = df['d'].str.extract('(^\D+)', expand=False).str.strip()
df
a b c d
0 ABC12345X3423 4 ABC X
1 DEF54321Y34333 5 DEF Y
2 GACZY31343Z3432 6 GACZY Z
我可以修改正则表达式以合并最后两行吗?
IIUC,你想提取数字之间的字符
df['d'] = df['a'].str.extract('(?<=\d)([A-Z])(?=\d)')
print(df)
a b d
0 ABC12345X3423 4 X
1 DEF54321Y34333 5 Y
2 GACZY31343Z3432 6 Z
我想从 pandas 数据框列中的值中提取字符并将它们存储在新列中。
import pandas as pd
df = pd.DataFrame({'a': ['ABC12345X3423','DEF54321Y34333','GACZY31343Z3432'], 'b': [4,5,6]})
df
a b
0 ABC12345X3423 4
1 DEF54321Y34333 5
2 GACZY31343Z3432 6
以下代码有效,但我使用 2 个提取命令来提取字符串中嵌入的单个字符(当您从右到左阅读时)。
df['c'] = df['a'].str.extract('(^\D+)', expand=False).str.strip()
df['d'] = df['a'].str.extract('([A-Z]\d+\Z)', expand=False).str.strip()
df['d'] = df['d'].str.extract('(^\D+)', expand=False).str.strip()
df
a b c d
0 ABC12345X3423 4 ABC X
1 DEF54321Y34333 5 DEF Y
2 GACZY31343Z3432 6 GACZY Z
我可以修改正则表达式以合并最后两行吗?
IIUC,你想提取数字之间的字符
df['d'] = df['a'].str.extract('(?<=\d)([A-Z])(?=\d)')
print(df)
a b d
0 ABC12345X3423 4 X
1 DEF54321Y34333 5 Y
2 GACZY31343Z3432 6 Z