如何在python pandas中设置第一列的列名?奇怪的错误

时间:2017-10-10 14:29:07

标签: python pandas csv dataframe

我有一个xls,标题行为:

             AZ-Phoenix     CA-Los Angeles CA-San Diego
YEAR         PHXR           LXXR           SDXR
January 1987  59.33         54.67          77
February 1987 59.65         54.89          78
March 1987    59.99         55.16          79

注意:第一行上面没有名称" YEAR列"。如何将此行的名称设置为YEAR?

   I have tried : data_xls = data_xls.rename(columns={data_xls.columns[0]: 'YEAR'}) 

但它正在用YEAR取代AZ-Phoenix排。我真的无法改变我想要的专栏。

如何更改此行??

3 个答案:

答案 0 :(得分:1)

YEAR不是专栏,这是一个索引。
尝试:

[hidden]=" category === 'Select a Category'"

或:

df.index.name = 'foobar'

在这种情况下,YEAR将成为普通列,您可以重命名它。

答案 1 :(得分:1)

如果您粘贴的文本是Excel文件的格式,如下所示:

excel screenshot

你可以通过以下几种方式解决这个问题:

您可以假装这两行是多级索引:

df = pandas.read_excel('test.xlsx', header=[0,1])

这会生成一个DataFrame,您可以像这样编制索引:

df['AZ-Phoenix']

导致

YEAR         PHXR
1987-01-01  59.33
1987-02-01  59.65
1987-03-01  59.99

如果第一行实际上是多余的(似乎机场已经由三个字母的机场代码唯一定义,其中R加了),你可以在导入时忽略该行并得到一个&#34 ;更平坦"数据帧:

df_flat = pandas.read_excel('test.xlsx', skiprows=1, index_col=0)

这为您提供了可以通过机场代码索引的内容:

df_flat.PHXR

给出

YEAR
1987-01-01    59.33
1987-02-01    59.65
1987-03-01    59.99
Name: PHXR, dtype: float64

答案 2 :(得分:0)

使用rename_axis

df.rename_axis('YEAR',1).rename_axis('YEAR',0) # change YEAR to whatever you need for rename :) 
Out[754]: 
YEAR  value           timestamp
YEAR                           
0      1    2017-10-03 14:33:52
1     Water 2017-10-04 14:33:48
2      1    2017-10-04 14:33:45
3      1    2017-10-05 14:33:30
4     Water 2017-10-03 14:33:40
5     Water 2017-10-05 14:32:13
6     Water 2017-10-04 14:32:01
7      1    2017-10-03 14:31:55