将函数应用于pandas中的所有列

时间:2017-10-04 02:40:04

标签: python pandas

这是数据框的一部分:

df2:
**headache**                                             **Sweating**                        
C0018681 / Headache / Sign or Symptom        C0038990 / Sweating / Finding
C0233408 / Disorientated in time / Finding   C0037195 / Sinus headache / Finding

我将使用以下函数删除所有列中的空格:

def codeCleaning (df, column):
    df[column].replace('\s*/\s*', '/', regex=True, inplace = True)
    df[column] = df[column].str.strip() 
    df[column] =df[column].str.lower()
    return df

我创建了一个列标题列表,如下所示

column=list(df2.columns.values)

然后我尝试将该函数应用于所有列,但它不起作用。这是我的  代码:

df2 = codeCleaning (df2,column )

我如何解决?

1 个答案:

答案 0 :(得分:2)

df.applymap(lambda x: '/'.join(map(str.lower, map(str.strip, x.split('/')))))

                                 headache                         Sweating
0       c0018681/headache/sign or symptom        c0038990/sweating/finding
1  c0233408/disorientated in time/finding  c0037195/sinus headache/finding

要解决混合类型,您可以转换为str

df.astype(str).applymap(lambda x: '/'.join(map(str.lower, map(str.strip, x.split('/')))))