【发布时间】:2022-01-03 06:15:18
【问题描述】:
我正在尝试编写一个函数,该函数将从 Pandas 数据框中的列的每个元素中删除前缀。我做了一些尝试,但似乎都没有成功:
prefixes = ['mm10---', 'GRCh38-']
def clean_genes(column):
for gene in CTRL_data[f'{column}']:
for prefix in prefixes:
if row[f"{column}"].str.startswith(f"{prefix}"):
gene = str.replace(f"{prefix}", '', gene)
return column
def clean_genes(column):
for gene in CTRL_data[f"{column}"]:
gene = gene[7:]
return column
clean_genes(gene)
有人能指出这些尝试出错的地方吗,或者我怎样才能更好地编写这个函数?两种情况的错误都是:
NameError Traceback (most recent call last)
/var/folders/pg/d3z5dn_x0f51tlwtj7391tjh0000gn/T/ipykernel_10029/2341573264.py in <module>
16 return column
17
---> 18 clean_genes(gene)
NameError: name 'gene' is not defined
编辑: 我还查看了此站点和其他站点上的其他一些问题,包括我认为有帮助的这个问题 (Remove specific characters from a string in Python)。
【问题讨论】:
-
gene未在clean_genes函数之外定义。此外,您还有 2 个名为clean_genes的函数。 -
clean_genes(gene)gene定义在哪里? -
name 'gene' is not defined有什么不清楚的地方? -
@Julien 'gene' 是我的数据框中列的名称。这不是或多或少等同于写
column=gene吗? -
不,它不是这样工作的。变量名
gene和字符串'gene'不是一回事。计算机不理解“或多或少”...