【问题标题】:How apply function to all columns with specifis data types如何将函数应用于具有特定数据类型的所有列
【发布时间】:2021-06-05 12:12:18
【问题描述】:

我有带有字符串和数字列的大 DataFrame。在字符串列中,值有重音符号,我需要将它们转换为“普通”字母。如何将函数应用于 pandas DataFrame 中的所有特定类型列(在这种情况下我需要所有字符串列)?

import unicodedata

def strip_accents(text):

    try:
        text = unicode(text, 'utf-8')
    except NameError: # unicode is a default on python 3 
        pass

    text = unicodedata.normalize('NFD', text)\
           .encode('ascii', 'ignore')\
           .decode("utf-8")
    return str(text)

import pandas as pd
data = [['Tóm','Čiž', 34], ['Ničk','Jóšš', 65], ['Julí', 'Álmó', 24]]
df = pd.DataFrame(data, columns = ['Name', 'City', 'Age'])

我需要如下输出:Tom、Ciz、Nick、...

【问题讨论】:

    标签: python python-3.x pandas string


    【解决方案1】:

    试试:

    首先过滤掉列:

    col=df.columns[df.dtypes=='object']
    

    最终使用applymap()方法:

    df[col]=df[col].applymap(strip_accents)
    

    df的输出:

        Name    City    Age
    0   Tom     Ciz     34
    1   Nick    Joss    65
    2   Juli    Almo    24
    

    【讨论】:

    • 谢谢你,完美!
    • select_dtypes 是另一个不错的选择:df = df.select_dtypes('object').applymap(strip_accents)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多