在熊猫数据框中用正则表达式替换用逗号分隔的字符串

时间:2020-05-20 21:55:21

标签: python regex pandas

我有一个制表符分隔的数据框,看起来像(例如):

   A                                 B                      C
gene1  AHX21832.1                        EEL39984.1,ARO60330.1  EEL39984.1
gene2  EEL39984.1,ARO60330.1             ARO60330.1             ARO60330.1
gene3  AYF09030.1,EEL37774.1,AQY42173.1  AQY42173.1             AQY42173.1

以下脚本在列表中效果很好:

values = ["AHX21832.1", "EEL39984.1,ARO60330.1", "AYF09030.1,EEL37774.1,AQY42173.1"]

script

如何在熊猫的数据框上实现此脚本?由于熊猫没有re.findall。

1 个答案:

答案 0 :(得分:0)

看看https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.findall.html。看起来有可能在数据帧上做re.findall的等效操作。

for column, data in df.iteritems():
    res = data.str.findall("[A-Z0-9]\.(\d+)")

因此对于您在repl.it链接中发布的代码,您可以通过执行以下操作获得相同的结果:

import pandas as pd

values = pd.Series(["AHX21832.1",
"EEL39984.1,ARO60330.1",
"AYF09030.1,EEL37774.1,AQY42173.1"])

res = values.str.findall("[A-Z0-9]\.(\d+)")

for x in res:
    print("Found", x)
print("total", res.shape[0])