首页 > 解决方案 > 将文本清理功能应用于多列

问题描述

我的数据框中有三列文本,我想应用相同的函数。这是我在下面尝试过的。我应该将什么作为参数传递给我的函数?

def clean_columns():
     df['column'] = df['column'].str.replace('[^\w\s]',' ')\
                  .str.replace('hello',' ')\
                  .str.replace('goodbye',' ')\
                  .str.lower()\
                  .str.split()
df[['Col1', 'Col2', 'Col3']].applymap(clean_columns)  

我不确定如何以某种方式编写函数,即它分别在每一列中使用并将函数应用于它。有任何想法吗?

标签: pythonpandaspython-applymap

解决方案


将函数改写为

def clean_columns(col):
    return col.str.replace('[^\w\s]',' ')\
                  .str.replace('hello',' ')\
                  .str.replace('goodbye',' ')\
                  .str.lower()\
                  .str.split()

并仅使用 apply:

df[['col1', 'col2', 'col3']] = df[['col1', 'col2', 'col3']].apply(clean_column)

推荐阅读