簡體   English   中英

Pandas:創建數據幀而不按字母順序自動排序列名

[英]Pandas: create dataframe without auto ordering column names alphabetically

我正在創建一個初始的pandas數據幀來存儲從其他代碼生成的結果:例如

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

使用datelist列表預定義列表。 然后其他代碼將為每個date輸出一些totalTT ,我將存儲在result數據框中。

所以我想的第一列是date ,第二個total第三TT 但是,pandas會自動按字母順序將其重新排序為TTdate ,創建時的total 雖然我之后可以手動重新排序,但我想知道是否有更簡單的方法可以一步到位。

我想我也可以

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

但它在某種程度上看起來也很單調乏味。 還有其他建議嗎?

您可以將(正確排序的)列列表作為參數傳遞給構造函數或使用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)
result = pd.DataFrame({'date': [23,24], 'total': 0,
                       'TT': 0},columns=['date','total','TT'])

將pandas> = 0.23與Python> = 3.6結合使用。

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

在將pandas v0.23.0與Python3.6結合使用時,在從dict創建DataFrame(或Series)時保留dict的插入順序。

請參閱https://pandas.pydata.org/pandas-docs/version/0.23.0/whatsnew.html#whatsnew-0230-api-breaking-dict-insertion-order

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM