python - 使用python pandas将csv列内的值替换为同一列括号内的值
问题描述
现在我想用这些列括号内的数据替换列 'SIFT' 和 'PolyPhen' 值。因此,对于第 1 行,SIFT 值将替换为 0.82,对于第 2 行,SIFT 值将替换为 0.85。我还想要括号前的部分,容忍/有害,在一个名为“SIFT_prediction”的新列中。
这是我到目前为止所尝试的:
import pandas as pd
import re
testfile = 'test_sift_columns.csv'
df = pd.read_csv(testfile)
df['SIFT'].re.search(r'\((.*?)\)',s).group(1)
此代码将获取 SIFT 列括号内的所有内容。但这并不能取代任何东西。我可能需要一个 for 循环来读取和替换每一行,但我不知道如何正确执行。此外,我不确定是否需要对 pandas 使用正则表达式。也许有更聪明的方法来解决我的问题。
解决方案
df = pd.DataFrame({'SIFT':['tol(0.82)','tol(0.85)','tol(1.42)'],
'PolyPhen':['beg(0)','beg(0)','beg(0)']})
pat = r'(.*?)\((.*?)\)'
df[['SIFT_prediction','SIFT']] = df['SIFT'].str.extract(pat)
df[['PolyPhen_prediction','PolyPhen']] = df['PolyPhen'].str.extract(pat)
print(df)
SIFT_prediction SIFT PolyPhen_prediction PolyPhen
0 tol 0.82 beg 0
1 tol 0.85 beg 0
2 tol 1.42 beg 0
选择:
df[['SIFT_prediction','SIFT']] = df['SIFT'].str.rstrip(')').str.split('(', expand=True)
df[['PolyPhen_prediction','PolyPhen']] = df['PolyPhen'].str.rstrip(')').str.split('(', expand=True)
推荐阅读
- algorithm - 分而治之 Delaunay 三角剖分 - 合并时获得第一个(又名“基础”)边缘
- cobol - On Size Error 没有给出预期的输出
- javascript - 跟踪已执行操作 MVC 和 SinglaR 的进度
- macos - 如何阻止 WKWebView 创建过多进程?
- scala - 检查RDD是否包含相同的键,如果是则合并它们
- c# - c# Immutability 创建全局存储
- encryption - 离线系统的公钥/私钥加密
- bash - 合并两个文件,同时在给定列 awk 中保留具有较大值的行
- javascript - 如何使用 Flow 输入通用的重选选择器?
- visual-studio - SSIS 包在 Visual Studio 2017 中被锁定