dataframe.columns 更改列表顺序

dataframe.columns changes order of list

我通过 pandas 导入制表符分隔的数据并通过 dataframe.columns = [] 分配新的列名。但是,在分配列名时,名称的顺序正在改变。

这是我的数据:

"ID_final"  "Value01"   "Value02"   "Value03"   "Value04"   "Value05"   "Value06"   "Value07"   "Value08"   "Value09"   "Value10"   "Value11"   "Value12"
724 0.00332 0.00224 0.00186 0.00131 0.00108 0.09092 0.14388 0.02926 0.01127 0.00829 0.00593 0.00448
1029    0.00317 0.00221 0.00193 0.00139 0.00128 0.04204 0.09327 0.02509 0.01035 0.00776 0.00561 0.00438
1700    0.0051  0.00353 0.00304 0.00233 0.00189 0.13548 0.21747 0.04044 0.01531 0.01173 0.00856 0.00667

我就是这样做的:

import pandas as pd 

dataframe = pd.read_csv('data.txt', sep='\t') 

header = {
        'ID',
        'January',
        'Febraury',
        'March',
        'April',
        'May',
        'June',
        'July',
        'August',
        'September',
        'October',
        'November',
        'December'}

dataframe.columns = header

在我分配列名称后,header 的顺序已更改,并且从 9 月开始,其他月份或多或少随机排列。我怎样才能保持 header.

的顺序

我相信您需要将列表中的值传递给 read_csv 中的参数 names,还需要设置 header=0 以覆盖旧列名称:

header = [
        'ID',
        'January',
        'Febraury',
        'March',
        'April',
        'May',
        'June',
        'July',
        'August',
        'September',
        'October',
        'November',
        'December']
dataframe = pd.read_csv('data.txt', sep='\t', header=0, names=header) 

替代解决方案是先跳过 header 值:

dataframe = pd.read_csv('data.txt', sep='\t', skiprows=1, names=header) 

编辑:就像您的解决方案中提到的@roganjosh 一样,只将列表传递给列名:

dataframe = pd.read_csv('data.txt', sep='\t') 

header = [
        'ID',
        'January',
        'Febraury',
        'March',
        'April',
        'May',
        'June',
        'July',
        'August',
        'September',
        'October',
        'November',
        'December']

dataframe.columns = header