[英]Extract string from Pandas/Python
我正在尝试从 dataframe 中提取字符串。
原始数据(数据框)
第 1 列:
CA_1,CA_2,CA_3,BA_1,BA_2,BA_3,CA_4,BA_12,CA_6
预计 Output
第 1 列:
CA_1,CA_2,CA_3,CA_4,CA_6
如何生产预期的 output? 我尝试了 pandas 提取、提取、包含但我无法生成预期的 output。
看起来您要删除所有不以CA_
开头的项目?
我会将str.replace
与正则表达式一起使用:
df['Column1'].str.replace(r'(?:(?!CA_)\b\w+,?)', '', regex=True)
替代split
/ explode
/ groupby.agg
:
(df['Column1'].str.split(',').explode()
.loc[lambda s: s.str.startswith('CA_')]
.groupby(level=0).agg(','.join)
)
output:
0 CA_1,CA_2,CA_3,CA_4,CA_6
Name: Column1, dtype: object
我们可以在这里使用str.replace
:
df["Column1"] = df["Column1"].str.replace(r'\b(?!CA_)[A-Z]+_\d+\b,?', '', regex=True)
这是一个正则表达式演示,显示替换逻辑正在运行。
考虑到 OP 的 dataframe 如下所示
df = pd.DataFrame({'Column1': ['CA_1', 'CA_2', 'CA_3', 'BA_1', 'BA_2', 'BA_3', 'CA_4', 'BA_12', 'CA_6']})
[Out]:
Column1
0 CA_1
1 CA_2
2 CA_3
3 BA_1
4 BA_2
5 BA_3
6 CA_4
7 BA_12
并假设 OP 希望 dataframe 仅包含包含字符串CA
的单元格,可以使用str.contains()
如下
df_new = df[df['Column1'].str.contains('CA')]
[Out]:
Column1
0 CA_1
1 CA_2
2 CA_3
6 CA_4
8 CA_6
或者,可以使用str.startswith()
df_new = df[df['Column1'].str.startswith('CA')]
[Out]:
Column1
0 CA_1
1 CA_2
2 CA_3
6 CA_4
8 CA_6
尝试这样的事情:
data = {
'col1': ['CA_1','CA_2','CA_3','BA_1','BA_2','BA_3','CA_4','BA_12','CA_6']
}
df = pd.DataFrame(data)
res = [dt for dt in data['col1'] if dt.startswith('CA_')]
print(res)
结果:
['CA_1', 'CA_2', 'CA_3', 'CA_4', 'CA_6']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.