我有一个叫data的数据框架。如何重命名仅有的一个列标题?比如gdp to log(gdp)?

data =
    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7
5   4    8    3
6   8    2    8
7   9    9   10
8   6    6    4
9  10   10    7

当前回答

Ewe可以重命名表

df = pd.DataFrame()
column_names = mydataframe.columns
for i in range(len(mydataframe)):
  column = mydataframe.iloc[:,i]
  df[column_names[i][:-8]+"desigred_texnt"] = column
print(df.columns)

其他回答

data.rename(columns={'gdp':'log(gdp)'}, inplace=True)

重命名表明它接受dict作为列的参数,因此您只需传递一个带有单个条目的dict。

另见相关

使用pandas.DataFrame.rename函数。 检查这个链接的描述。

data.rename(columns = {'gdp': 'log(gdp)'}, inplace = True)

如果您打算重命名多个列,那么

data.rename(columns = {'gdp': 'log(gdp)', 'cap': 'log(cap)', ..}, inplace = True)

Ewe可以重命名表

df = pd.DataFrame()
column_names = mydataframe.columns
for i in range(len(mydataframe)):
  column = mydataframe.iloc[:,i]
  df[column_names[i][:-8]+"desigred_texnt"] = column
print(df.columns)
df.rename(columns=lambda x: {"My_sample": "My_sample_new_name"}.get(x, x))

如果需要重命名单个列,则使用list-comprehension是一种更快的实现。

df.columns = ['log(gdp)' if x=='gdp' else x for x in df.columns]

如果需要重命名多个列,可以使用如下条件表达式:

df.columns = ['log(gdp)' if x=='gdp' else 'cap_mod' if x=='cap' else x for x in df.columns]

或者,使用字典构造一个映射,并通过将默认值设置为旧名称来执行它的get操作的list-comprehension:

col_dict = {'gdp': 'log(gdp)', 'cap': 'cap_mod'}   ## key→old name, value→new name

df.columns = [col_dict.get(x, x) for x in df.columns]

计时:

%%timeit
df.rename(columns={'gdp':'log(gdp)'}, inplace=True)
10000 loops, best of 3: 168 µs per loop

%%timeit
df.columns = ['log(gdp)' if x=='gdp' else x for x in df.columns]
10000 loops, best of 3: 58.5 µs per loop