首页 > 解决方案 > 正则表达式将用逗号分隔的字符串替换为熊猫数据框中的总和

问题描述

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

   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"]

脚本

如何在我的熊猫数据框上实现这个脚本?由于 pandas 中没有 re.findall 。

标签: pythonregexpandas

解决方案


看看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])

推荐阅读