社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

由于索引,Python pandas无法添加列名

hachiko • 3 年前 • 1331 次点击  

这是我正在使用的数据帧。

mtcars = pd.DataFrame.from_dict({'Unnamed: 0': {0: 'Mazda RX4', 1: 'Mazda RX4 Wag', 2: 'Datsun 710', 3: 'Hornet 4 Drive', 4: 'Hornet Sportabout', 5: 'Valiant', 6: 'Duster 360', 7: 'Merc 240D', 8: 'Merc 230', 9: 'Merc 280', 10: 'Merc 280C', 11: 'Merc 450SE', 12: 'Merc 450SL', 13: 'Merc 450SLC', 14: 'Cadillac Fleetwood', 15: 'Lincoln Continental', 16: 'Chrysler Imperial', 17: 'Fiat 128', 18: 'Honda Civic', 19: 'Toyota Corolla', 20: 'Toyota Corona', 21: 'Dodge Challenger', 22: 'AMC Javelin', 23: 'Camaro Z28', 24: 'Pontiac Firebird', 25: 'Fiat X1-9', 26: 'Porsche 914-2', 27: 'Lotus Europa', 28: 'Ford Pantera L', 29: 'Ferrari Dino', 30: 'Maserati Bora', 31: 'Volvo 142E'}, 'mpg': {0: 21.0, 1: 21.0, 2: 22.8, 3: 21.4, 4: 18.7, 5: 18.1, 6: 14.3, 7: 24.4, 8: 22.8, 9: 19.2, 10: 17.8, 11: 16.4, 12: 17.3, 13: 15.2, 14: 10.4, 15: 10.4, 16: 14.7, 17: 32.4, 18: 30.4, 19: 33.9, 20: 21.5, 21: 15.5, 22: 15.2, 23: 13.3, 24: 19.2, 25: 27.3, 26: 26.0, 27: 30.4, 28: 15.8, 29: 19.7, 30: 15.0, 31: 21.4}, 'cyl': {0: 6, 1: 6, 2: 4, 3: 6, 4: 8, 5: 6, 6: 8, 7: 4, 8: 4, 9: 6, 10: 6, 11: 8, 12: 8, 13: 8, 14: 8, 15: 8, 16: 8, 17: 4, 18: 4, 19: 4, 20: 4, 21: 8, 22: 8, 23: 8, 24: 8, 25: 4, 26: 4, 27: 4, 28: 8, 29: 6, 30: 8, 31: 4}, 'disp': {0: 160.0, 1: 160.0, 2: 108.0, 3: 258.0, 4: 360.0, 5: 225.0, 6: 360.0, 7: 146.7, 8: 140.8, 9: 167.6, 10: 167.6, 11: 275.8, 12: 275.8, 13: 275.8, 14: 472.0, 15: 460.0, 16: 440.0, 17: 78.7, 18: 75.7, 19: 71.1, 20: 120.1, 21: 318.0, 22: 304.0, 23: 350.0, 24: 400.0, 25: 79.0, 26: 120.3, 27: 95.1, 28: 351.0, 29: 145.0, 30: 301.0, 31: 121.0}, 'hp': {0: 110, 1: 110, 2: 93, 3: 110, 4: 175, 5: 105, 6: 245, 7: 62, 8: 95, 9: 123, 10: 123, 11: 180, 12: 180, 13: 180, 14: 205, 15: 215, 16: 230, 17: 66, 18: 52, 19: 65, 20: 97, 21: 150, 22: 150, 23: 245, 24: 175, 25: 66, 26: 91, 27: 113, 28: 264, 29: 175, 30: 335, 31: 109}, 'drat': {0: 3.9, 1: 3.9, 2: 3.85, 3: 3.08, 4: 3.15, 5: 2.76, 6: 3.21, 7: 3.69, 8: 3.92, 9: 3.92, 10: 3.92, 11: 3.07, 12: 3.07, 13: 3.07, 14: 2.93, 15: 3.0, 16: 3.23, 17: 4.08, 18: 4.93, 19: 4.22, 20: 3.7, 21: 2.76, 22: 3.15, 23: 3.73, 24: 3.08, 25: 4.08, 26: 4.43, 27: 3.77, 28: 4.22, 29: 3.62, 30: 3.54, 31: 4.11}, 'wt': {0: 2.62, 1: 2.875, 2: 2.32, 3: 3.215, 4: 3.44, 5: 3.46, 6: 3.57, 7: 3.19, 8: 3.15, 9: 3.44, 10: 3.44, 11: 4.07, 12: 3.73, 13: 3.78, 14: 5.25, 15: 5.424, 16: 5.345, 17: 2.2, 18: 1.615, 19: 1.835, 20: 2.465, 21: 3.52, 22: 3.435, 23: 3.84, 24: 3.845, 25: 1.935, 26: 2.14, 27: 1.513, 28: 3.17, 29: 2.77, 30: 3.57, 31: 2.78}, 'qsec': {0: 16.46, 1: 17.02, 2: 18.61, 3: 19.44, 4: 17.02, 5: 20.22, 6: 15.84, 7: 20.0, 8: 22.9, 9: 18.3, 10: 18.9, 11: 17.4, 12: 17.6, 13: 18.0, 14: 17.98, 15: 17.82, 16: 17.42, 17: 19.47, 18: 18.52, 19: 19.9, 20: 20.01, 21: 16.87, 22: 17.3, 23: 15.41, 24: 17.05, 25: 18.9, 26: 16.7, 27: 16.9, 28: 14.5, 29: 15.5, 30: 14.6, 31: 18.6}, 'vs': {0: 0, 1: 0, 2: 1, 3: 1, 4: 0, 5: 1, 6: 0, 7: 1, 8: 1, 9: 1, 10: 1, 11: 0, 12: 0, 13: 0, 14: 0, 15: 0, 16: 0, 17: 1, 18: 1, 19: 1, 20: 1, 21: 0, 22: 0, 23: 0, 24: 0, 25: 1, 26: 0, 27: 1, 28: 0, 29: 0, 30: 0, 31: 1}, 'am': {0: 1, 1: 1, 2: 1, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0, 13: 0, 14: 0, 15: 0, 16: 0, 17: 1, 18: 1, 19: 1, 20: 0, 21: 0, 22: 0, 23: 0, 24: 0, 25: 1, 26: 1, 27: 1}}

)

我打字的时候 mtcars.columns 我可以看到第一列是“未命名”。我正在尝试添加一个列名。

Index(['Unnamed: 0', 'mpg', 'cyl', 'disp', 'hp', 'drat', 'wt', 'qsec', 'vs',
       'am', 'gear', 'carb'],
      dtype='object')

当我通过索引(索引为0)调用列名时,我看到了同样的情况

mtcars.columns[0]

我看到名字了

'Unnamed: 0'

但是当我试图改变名字的时候

mtcars.columns[0] = 'car'

我得到一个错误:

TypeError: Index does not support mutable operations

所以我想,也许这是一个索引列?

mtcars.Index

但我想这没有任何意义,因为我看到了另一个错误。

AttributeError: 'DataFrame' object has no attribute 'Index'

在R中,您可以这样做来更改列名(这段代码可以工作,但在R中)。

colnames(mtcars)[1] <- "new_name"
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133276
 
1331 次点击  
文章 [ 3 ]  |  最新文章 3 年前
Abhyuday Vaish
Reply   •   1 楼
Abhyuday Vaish    3 年前

以下是如何重命名该列:

mtcars.rename(columns={mtcars.columns[0]: 'car'}, inplace = True)
# This is equivalent to
mtcars = mtcars.rename(columns={mtcars.columns[0]: 'car'})

输出:

                    car   mpg  cyl   disp   hp  drat     wt   qsec  vs   am
0             Mazda RX4  21.0    6  160.0  110  3.90  2.620  16.46   0  1.0
1         Mazda RX4 Wag  21.0    6  160.0  110  3.90  2.875  17.02   0  1.0
2            Datsun 710  22.8    4  108.0   93  3.85  2.320  18.61   1  1.0
3        Hornet 4 Drive  21.4    6  258.0  110  3.08  3.215  19.44   1  0.0
4     Hornet Sportabout  18.7    8  360.0  175  3.15  3.440  17.02   0  0.0
5               Valiant  18.1    6  225.0  105  2.76  3.460  20.22   1  0.0
6            Duster 360  14.3    8  360.0  245  3.21  3.570  15.84   0  0.0
BeRT2me
Reply   •   2 楼
BeRT2me    3 年前

如果所有其他方法都失败了,而您记不起更高级的方法,那么像这样明确列出所有列将始终有效:

mtcars.columns = ['car', 'mpg', 'cyl', 'disp', 'hp', 'drat', 'wt', 'qsec', 'vs', 'am', 'gear', 'carb']
mozway
Reply   •   3 楼
mozway    3 年前

你有几个选择:

mtcars = mtcars.rename(columns={mtcars.columns[0]: 'new'})
mtcars = mtcars.set_axis(['new']+list(mtcars.columns[1:]), axis=1)
# more "hacky" way, maybe not officially encouraged
# NB. in place modification
mtcars.columns.values[0] = 'new'

输出:

                 new   mpg  cyl   disp   hp  drat     wt   qsec  vs   am
0          Mazda RX4  21.0    6  160.0  110  3.90  2.620  16.46   0  1.0
1      Mazda RX4 Wag  21.0    6  160.0  110  3.90  2.875  17.02   0  1.0
2         Datsun 710  22.8    4  108.0   93  3.85  2.320  18.61   1  1.0
3     Hornet 4 Drive  21.4    6  258.0  110  3.08  3.215  19.44   1  0.0
4  Hornet Sportabout  18.7    8  360.0  175  3.15  3.440  17.02   0  0.0