替换数据框列中的多个字符串

时间:2017-08-04 03:47:48

标签: python pandas dataframe data-cleaning

我正在寻找一种简单的方法来替换多个字符串并将其分配给具有更新替换的新df

这是我使用df ['Column']

的样本列
Column
-----------------
K700E
R957Q
Deletion
L747_T751delinsP
S752_I759del
I491M
D770_P772dup
G719A
G735S
N771_H773dup
K467T
E746_T751insIP
D770_N771insD
G724S
K745_A750del
EGFRvIII
V765A
EGFRvII
L858M

有些条目包含我不需要的文本,基本上需要清理。下面是我的代码,我似乎无法做对。

for i in df['Column']:
df['Column'].replace('Truncating Mutations', '9999')
df['Column'].replace('Amplification', '9999')
print(i)

还有一些条目,如

EGFR-RAD51 Fusion

我基本上想删除'Fusion'这个词,但保留'EGFR'。

任何建议都非常感谢新手。 =)

2 个答案:

答案 0 :(得分:2)

df.replace不是就地操作。此外,您可以使用regex=True并结合前两个替换项。第三个也可以遵循,并且更简单,因为您只是删除了Fusion

df['Column'] = df['Column'].replace('(?:Truncating Mutations)|(?:Amplification)', '9999', regex=True)\
                           .replace('Fusion', '')

执行替换后,使用df['Column'] = ...将结果分配到位。

答案 1 :(得分:0)

替代答案

您还可以使用要替换的键和值传递词典:

rdict = {
    "Truncating Mutations":"9999", 
    "Amplification":"9999",
    "Fusion":""
    }

df[0] = df[0].replace(rdict)