最近做一个系列博客,跟着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