最近做一个系列博客,跟着stackoverflow学Pandas。

pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序:

https://stackoverflow.com/questions/tagged/pandas?sort=votes&pageSize=15

Renaming columns in pandas - 列的重命名

https://stackoverflow.com/questions/11346283/renaming-columns-in-pandas

方法1

>>> df = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
>>> df.columns = ['a', 'b']
>>> df
#   a   b
#0  1  10
#1  2  20

上面的方法直接给columns属性赋值, 如果需要对单个列名进行修改,可以

col_names = df.columns.values
col_names[0] = 'new_name'
df.columns = col_names 

但是绝对不能 df.columns.values[0] = 'new_name', df.columns.values 是不允许修改的。

方法2

如果仅对特定的列进行重命名,我们可以采用rename函数,进行操作。

df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
# OR
new_df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}, inplace=True)
# inplace = True 目的是修改原有Dataframe,不生成新的 DataFrame

参考

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rename.html

# rename 可以修改 Series 的index值
>>> s = pd.Series([1, 2, 3])
>>> s
0    1
1    2
2    3
dtype: int64
>>> s.rename("my_name") # scalar, changes Series.name
0    1
1    2
2    3
Name: my_name, dtype: int64
>>> s.rename(lambda x: x ** 2)  # function, changes labels
0    1
1    2
4    3
dtype: int64
>>> s.rename({1: 3, 2: 5})  # mapping, changes labels
0    1
3    2
5    3
dtype: int64
>>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
>>> df.rename(2)
Traceback (most recent call last):
...
TypeError: 'int' object is not callable
>>> df.rename(index=str, columns={"A": "a", "B": "c"})
   a  c
0  1  4
1  2  5
2  3  6
>>> df.rename(index=str, columns={"A": "a", "C": "c"})
   a  B
0  1  4
1  2  5
2  3  6
05-12 14:20