2017-01-13 4 views
1

私はERPシステム用の多数の列を持つpandasデータフレームからcsvファイルを作成します。ほとんどの列は空または定数ですが、システムのインポートツールでは、指定された列順序を持つcsvファイルが必要です。Python pandasは自動的に列を並べ替えます

データフレームを作成するとき、私はそのようなものがあります:私はリストを印刷するとき、列が並べられ

importlist = pd.DataFrame({ 'A': 'TestA', 
          'C': some values, 
          'B': '0'}) 

をA、B、Cの

は自動的な順序付けを防止する方法はあります?手動で列を並べ替えることができますが、約50列あるので、これはとても良い解決策にはなりません。デフォルトのpython dictが非onderedあるので

+0

実際にこのようなデータフレームを作成するのか、テキストファイルまたはデータベースからデータソースを読み込みますか? – Parfait

+0

このようにDataFrameを作成する必要があります。これは、ERPシステムにインポートされるPCBの部品表です。 –

答えて

3

完全にするために、あなたはまた、次の2つの要素のタプルのリストを渡すOrderedDictを使用することができる場所の最初の要素タプルは列名であり、2番目の要素は値のリストです。

pd.DataFrame(OrderedDict([('A',['TestA', 'TestB']), 
          ('C', ['Some Item', 'Other Item']), 
         ('B',[0, 1])])) 

     A   C B 
0 TestA Some Item 0 
1 TestB Other Item 1 
+0

これは完全に機能します! –

1

あなたは、所望の順序のあなたの列のリストでパラメータcolumnsを渡す必要があります。

importlist = pd.DataFrame({ 'A': 'TestA', 
         'C': some values, 
         'B': '0'}, columns = ['A','C','B']) 

サンプル:

importlist = pd.DataFrame({ 'A': ['TestA'], 
          'C': [4], 
          'B': ['0']}, columns = ['A','C','B']) 

print (importlist) 
     A C B 
0 TestA 4 0 

場合やcsvを読み取るためread_csvを使用可能。 docs

DataFramesを作成するための別の方法であり、そのうちの一つは DataFrame.from_itemsです:

a = ['TestA','TestB'] 
b = ['0', '7'] 
c = [4,7] 

print (pd.DataFrame.from_items([('A', a), ('C', c),('B', b)])) 
     A C B 
0 TestA 4 0 
1 TestB 7 7 
関連する問題