您的位置:首页 > 其它

【跟着stackoverflow学Pandas】Renaming columns in pandas-列的重命名

2017-08-03 19:19 489 查看
最近做一个系列博客,跟着stackoverflow学Pandas。

专栏地址:http://blog.csdn.net/column/details/16726.html

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐