我有一个叫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
我有一个叫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