我想重构以下代码:
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()
我该如何解决?这是我试图通过重命名dataframe(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()
答案 0 :(得分:1)
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
答案 1 :(得分:0)
这有效:
labels = list(df.columns)
for i, label in enumerate(labels):
labels[i] = label.replace(' ', '_')
df.columns = labels
df.head()
答案 2 :(得分:0)
您可以使用listcomprehension代替for。
labels = list(df.columns)
labels = [label.replace(' ', '_') for label in labels]
df.columns = labels
您的代码中的错误是:
for label in labels:
而不是'for range(len(labels))中的标签:`