Maison  >  Article  >  développement back-end  >  Introduction à la méthode de modification des noms de colonnes DataFrame dans pandas (exemple de code)

Introduction à la méthode de modification des noms de colonnes DataFrame dans pandas (exemple de code)

不言
不言avant
2019-02-22 14:29:385580parcourir

Cet article vous présente la méthode de modification des noms de colonnes DataFrame dans les pandas (exemples de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Cet article est référencé à partir de : pandas Modifier les noms de colonnes DataFrame
Le blog original effectue la même opération de modification pour chaque élément de DataFrame.columns
Mais mon travail est une copie mécanique consistant à effectuer différentes opérations sur chaque élément. N'hésitez pas à m'éclairer

Poser une question

Il existe un DataFrame nommé dataset

>>> dataset.columns
Index(['age', 'job', 'marital', 'education', 'default', 'housing', 'loan',
       'contact', 'month', 'day_of_week', 'duration', 'campaign', 'pdays',
       'previous', 'poutcome', 'emp.var.rate', 'cons.price.idx',
       'cons.conf.idx', 'euribor3m', 'nr.employed', 'y'],
      dtype='object')

Maintenant, je veux nommez-le Changez-le en :columns

>>> new_columns
Index(['age_0', 'job_1', 'marital_2', 'education_3', 'default_4', 'housing_5',
       'loan_6', 'contact_7', 'month_8', 'day_of_week_9', 'duration_10',
       'campaign_11', 'pdays_12', 'previous_13', 'poutcome_14',
       'emp.var.rate_15', 'cons.price.idx_16', 'cons.conf.idx_17',
       'euribor3m_18', 'nr.employed_19', 'y_20'],
      dtype='object')

Comment faire ?

Solution

1. Modifier via ses propres propriétés de la classe DataFrame.columns :

1. Modifier directement sans affectation cérébrale

>>> # 先解决`new_columns`的推导问题
>>> # 列表推导
>>> new_columns_list = [column_str+'_'+str(i) for i ,column_str in enumerate(dataset.columns)]
>>> # 类型转换
>>> new_columns = pd.core.indexes.base.Index(new_columns_list)
>>> dataset.columns = new_columns

2. Utilisez la fonction pour modifier .map(mapper, na_action=None)

>>> # 注:mapper 多运用 lambda 表达式
>>> # 但我似乎没有找到在 lambda 表达式中改变两个值的方法
>>> # 所以只能蹩脚地用一个全局变量i, 和映射函数mapper()
>>> # 希望大家能帮我找到方法

>>> i = 0
>>> def mapper(x): # 映射函数即 mapper
    global i
    x += '_' + str(i)
    i += 1
    return x
>>> dataset.columns.map(mapper)

3. Reportez-vous au blog pour utiliser l'objet DataFrame.columns.str. 🎜>

J'ai cherché dans les documents en utilisant

, mais help(DataFrame.columns.str) n'ai pas trouvé de méthode que je pourrais appliquer. J'ai pensé que je prendrais un peu de temps pour traduire ce document

.

2. Via la fonction DataFrame .rename() pour modifier

1. Méthode de dictionnaire violente (avantages : vous ne pouvez modifier que des colonnes spécifiques)

>>> # 此处先用字典推导法
>>> new_dict = {
    key:key+'_'+str(i)
    for i, key in enumerate(dataset.columns)
    }
>>> dataset.rename(columns=new_dict, inplace=True)

2. Méthode de modification du mappage

>>> # 原博文依然用到了 lambda 表达式
>>> # 我就再生搬硬套一次, 把上面的复制过来
>>> # 蹩脚地用一个全局变量i, 和映射函数mapper()

>>> i = 0
>>> def mapper(x): # 映射函数即 mapper
    global i
    x += '_' + str(i)
    i += 1
    return x
dataset.rename(columns=mapper, inplace=True)
Pour résumer un peu : la dérivation de dictionnaire et la dérivation de liste sont très similaires. La plus grande différence est de savoir s'il faut choisir des crochets ou des accolades

<.>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer