首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将更改应用于数据帧的列名

将更改应用于数据帧的列名
EN

Stack Overflow用户
提问于 2013-04-10 22:50:28
回答 2查看 1.5K关注 0票数 0

我有一个数据帧,我想要更改列名。目前我正在使用下面的方法,它涉及转置,重新索引和转置回来。一定有更简单的方法……

如有任何建议,欢迎光临。

代码语言:javascript
复制
import pandas as pd

#make a dataframe with wacky column names
d = {'garbled #### one' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd']),
     'garbled ### two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)

#fix the column names by transposing, reseting index, string manipulation,
#and transposing back  
df = df.T
df = df.reset_index()
df['index'] = df['index'].apply(lambda x: x.split()[0]+ " " +x.split()[2])
df = df.set_index('index')
df = df.T
df

index   garbled two garbled one
a    1   1
b    2   2
c    3   3
d    4   4

谢谢,zach cp

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-11 01:55:55

rename_axis允许在不创建/删除列的情况下重命名。重命名可以通过函数或一对一映射(类似于字典)来完成,映射可以是部分的(不必包含所有名称)。

代码语言:javascript
复制
In [42]: df
Out[42]: 
   garbled #### one  garbled #### two
a                 1                 1
b                 2                 2
c                 3                 3
d                 4                 4

In [43]: df.rename_axis(lambda x: x.split()[0]+ " " +x.split()[2])
Out[43]: 
   garbled one  garbled two
a            1            1
b            2            2
c            3            3
d            4            4

In [44]: df.rename_axis({'garbled #### one': 'one', 'garbled #### two': 'two'})
Out[44]: 
   one  two
a    1    1
b    2    2
c    3    3
d    4    4
票数 2
EN

Stack Overflow用户

发布于 2013-04-10 23:31:47

也许我低估了这个问题,但这里有一个相当简单的方法。

使用以下命令获取列名列表(实际上是一个pd.Index):

代码语言:javascript
复制
df.columns

遍历列名,看看是否有乱码。如果发现一个名称乱码的列,请创建一个名称正确的新列,然后删除旧列,如下所示:

代码语言:javascript
复制
df["good-one"] = df["garbled #### one"]
del df["garbled #### one"]

除非表很大,并且复制的数据量是一个问题,否则这将是可行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15929220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档