首页 > 解决方案 > 如何有效地更新熊猫数据框中的列名?

问题描述

我想重构以下代码:

labels = list(df.columns)
labels[0] = labels[0].replace(' ', '_')
labels[1] = labels[1].replace(' ', '_')
labels[2] = labels[2].replace(' ', '_')
labels[3] = labels[3].replace(' ', '_')
labels[5] = labels[5].replace(' ', '_')
labels[6] = labels[6].replace(' ', '_')
df.columns = labels

df.head()

但是,当我在 Jupyter 中运行代码时,我不断收到 ValueError。我想创建整数索引。这就是我将代码重构为:

labels = list(df.columns)
for label in labels: 
    label = int(label)
    labels[label] = labels[label].replace(' ', '_')
df.columns = labels

df.head()

我该如何解决?这是我试图通过重命名数据框(df)以删除空格来实现的示例:

new_df = df.rename(columns={'fixed acidity': 'fixed_acidity',
                             'volatile acidity': 'volatile_acidity',
                             'citric acid': 'citric_acid',
                             'residual sugar': 'residual_sugar',
                             'free sulfur dioxide': 'free_sulfur_dioxide',
                             'total sulfur dioxide': 'total_sulfur_dioxide'
                            })
new_df.head()

标签: pythonpandas

解决方案


修复列名的方法

  • 对所有列名进行相同的更改

用一个list comprehension

df.columns = [col.replce(' ', '_') for col in df.columns]

利用str.replace

df.columns = df.columns.str.replace(" ", "_")

用一个for-loop

  • 没必要做list(df.columns)
  • 没有必要使用enumerate
labels = list()

for col in df.columns:
    labels.append(col.replace(' ', '_'))

df.columns = labels

推荐阅读