Python 提取部分字符串匹配直到列中的特定字符
我想从列的行中提取与部分字符串匹配的字符串,直到满足特定字符 我希望列_3中所有以“String_”开头直到“;”字符的字符串 DF包含如下内容:Python 提取部分字符串匹配直到列中的特定字符,python,pandas,dataframe,slice,Python,Pandas,Dataframe,Slice,我想从列的行中提取与部分字符串匹配的字符串,直到满足特定字符 我希望列_3中所有以“String_”开头直到“;”字符的字符串 DF包含如下内容: Column_1 column_2 column_3 A B X;A;B;String_123;C Y L Y;Q;S;D;F;String_463;F;L;U P Q K;E;TX;String_103;1;1;D;
Column_1 column_2 column_3
A B X;A;B;String_123;C
Y L Y;Q;S;D;F;String_463;F;L;U
P Q K;E;TX;String_103;1;1;D;F
我想要的只是这些值:
String_123
String_463
String_103
运行:
df.column_3.str.extract(r'(?PString_[^;]+))
提取方法匹配捕获组。
为了便于识别,我给这个组命名,它将是输出列的名称
首先使用的正则表达式只匹配“字符串”,然后匹配非空序列
对于“;”以外的字符,可以使用正则表达式提取此信息。正则表达式将惰性地匹配字符串“string_”,然后匹配0个或多个字符,直到它看到第一个逗号
data_str = """Column_1 column_2 column_3
A B X;A;B;String_123;C
Y L Y;Q;S;D;F;String_463;F;L;U
P Q K;E;TX;String_103;1;1;D;F"""
data = [line.split() for line in data_str.splitlines()]
import pandas as pd
df = pd.DataFrame(data[1:], columns=data[0])
print(df['column_3'].str.extract(r'(String_.*?);'))
输出
0
0 String_123
1 String_463
2 String_103
字符串是否总是在2之后出现代码>?否,每行“;”的数量可能不同。
0
0 String_123
1 String_463
2 String_103