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

Import from Excel with panda but missing the index header

我想使用来自 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

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

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

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

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

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

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