Pandas:创建 Dataframe ,但不自动按字母顺序排列列名

nr7wwzry  于 2022-12-16  发布在  其他
关注(0)|答案(3)|浏览(178)

我正在创建一个初始的pandas Dataframe 来存储其他代码生成的结果:例如:

result = pd.DataFrame({'date': datelist, 'total': [0]*len(datelist), 
                       'TT': [0]*len(datelist)})

datelist是一个预定义的列表,然后其他代码将为total输出一些数字,并为每个date输出TT,我将把这些数字存储在result Dataframe 中。
所以我希望第一列是date,第二列是total,第三列是TT,但是Pandas会在创建时自动按字母顺序重新排序为TTdatetotal,虽然我可以在之后手动重新排序,但我想知道是否有更简单的方法可以一步完成。
我想我也可以

result = pd.DataFrame(np.transpose([datelist, [0]*l, [0]*l]),
                      columns = ['date', 'total', 'TT'])

但不知怎么的,看起来也很乏味,还有别的建议吗?

clj7thdc

clj7thdc1#

您可以将列的列表(正确排序)作为参数传递给构造函数或使用OrderedDict:

# option 1:
result = pd.DataFrame({'date': datelist, 'total': [0]*len(datelist), 
                   'TT': [0]*len(datelist)}, columns=['date', 'total', 'TT'])

# option 2:
od = collections.OrderedDict()
od['date'] = datelist
od['total'] = [0]*len(datelist)
od['TT'] = [0]*len(datelist)
result = pd.DataFrame(od)
ni65a41a

ni65a41a2#

result = pd.DataFrame({'date': [23,24], 'total': 0,
                       'TT': 0},columns=['date','total','TT'])
j91ykkif

j91ykkif3#

将panda〉= 0.23与Python〉= 3.6结合使用。
result = pd.DataFrame({'date': datelist, 'total': [0]*len(datelist), 'TT': [0]*len(datelist)})
在结合使用panda v0.23.0和Python3.6时,从字典创建DataFrame(或Series)时保留字典的插入顺序。
请访问https://pandas.pydata.org/pandas-docs/version/0.23.0/whatsnew.html#whatsnew-0230-api-breaking-dict-insertion-order。

相关问题