使用panda从Excel导入但缺少索引标题

时间:2017-08-15 17:41:48

标签: python excel dataframe header missing-data

我想使用xlsx中的这些数据:

               Fe    Mg    Al     Si     P     S     K     Ca     Ti
          5   0.80  2.09  3.49   7.05  0.19  0.07  0.13  84.28   1.90
          5   0.75  2.69  3.91  12.42  0.13  0.09  0.18  78.18   1.64
          3   0.87  2.66  3.71   7.64  0.17  0.05  0.12  82.97   1.81
               ...............

但是当我导入时:

file = 'test.xlsx'
xl = pd.ExcelFile(file)
df1 = xl.parse('Sheet1')

然后尝试给0列命名,但我只能将Fe重命名为Fabric:

new_columns = df1.columns.values;
new_columns[0] = 'Fabric';
df1.columns = new_columns

这就是我得到的:

            Fabric    Mg    Al     Si     P     S     K     Ca     Ti
          5   0.80  2.09  3.49   7.05  0.19  0.07  0.13  84.28   1.90
          5   0.75  2.69  3.91  12.42  0.13  0.09  0.18  78.18   1.64
          3   0.87  2.66  3.71   7.64  0.17  0.05  0.12  82.97   1.81

而不是这个[:)]:

     Fabric Fe    Mg    Al     Si     P     S     K     Ca     Ti
        5   0.80  2.09  3.49   7.05  0.19  0.07  0.13  84.28   1.90
        5   0.75  2.69  3.91  12.42  0.13  0.09  0.18  78.18   1.64
        3   0.87  2.66  3.71   7.64  0.17  0.05  0.12  82.97   1.81

我想我在这里遗漏了一些基本的东西,但是当我尝试搜索这个时我没有运气,所以请你如果有这个想法,请帮助:)。谢谢 !

2 个答案:

答案 0 :(得分:0)

Fabric看起来像是数据帧的索引。您可能最好重置它,然后重命名列。

df1 = df1.reset_index()
df1.columns =['Fabric'] + df1.columns[1:].tolist()

答案 1 :(得分:0)

如果我提前不知道列的名称或数量(只有第一个未命名的列应该是“datetime”),我也会遇到类似的情况。

在这种情况下,我读取了日期,并使用 .rename()Unnamed: 0 重命名为它应该的名称:

df1 = pd.read_csv(filepath)
df1.rename(columns={'Unnamed: 0':'datetime'}, inplace=True)
df1.set_index('datetime', inplace=True)