Pandas:创建数据帧而不按字母顺序自动排序列名

hur*_*ale 10 python dataframe pandas

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

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

datelist一个预定义的列表.然后其他代码将输出一些数量totalTT用于每个date,我将在存储result数据帧.

所以我想要第一列date,第二列total和第三列TT.然而,大熊猫将自动按字母顺序重新排列它TT,date,total在创建.虽然我之后可以手动重新排序,但我想知道是否有更简单的方法可以一步到位.

我想我也可以

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

但它在某种程度上看起来也很单调乏味.还有其他建议吗?

won*_*nce 14

您可以将(正确排序的)列列表作为参数传递给构造函数或使用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)
Run Code Online (Sandbox Code Playgroud)

  • 它应该工作,pandas明确检查它:https://github.com/pydata/pandas/blob/master/pandas/core/frame.py#L397 (2认同)