对datafram的列名应用更改

2024-04-25 07:07:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,我想更改列名。目前我正在使用下面的方法,包括转置、重新编制索引和调回。一定有更简单的方法。。。。。在

如有任何建议,我们将不胜感激

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

谢谢, 扎克cp


Tags: 数据方法importdfindexnamescolumnone
2条回答

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

获取列名列表(实际上是一个pd.Index),方法是:

df.columns

迭代列名以查看是否有任何列名称被混淆。如果发现列名称有误,请使用正确的名称创建新列,然后删除旧列,如下所示:

^{pr2}$

除非表很大,而且需要考虑复制的数据量,否则这是可行的。在

rename_axis允许在不创建/删除列的情况下重命名。重命名可以用函数或一对一映射(dict-like)完成,映射可以是部分的(不必包括所有名称)。在

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

相关问题 更多 >