47424


Dataframeでデータを作成し、そのデータをそのままcsvに出力をしようとした際、  
indexで指定した並び順(column)ではなく、アルファベット順になって出力されてしまいます。  
indexで指定した並び順のままにするにはどうすれば良いのでしょうか？

記述内容としては以下のような内容です。

[code]

    import pandas as pd
    
    def create_csv():
        df = pd.DataFrame([])
        data = [[0, "are", "sore"],[1,"kore","dore"]]
    
        for i in range(len(data)):
            add = pd.Series(data[i], index=["key", "data1", "data2"])
            df = df.append(add, ignore_index=True)
    
        print(df)
    
    
    if __name__ == "__main__":
        create_csv()
    
[/code]

上記の結果としては以下の内容が表示されています。

[code]

      data1 data2  key
    0   are  sore  0.0
    1  kore  dore  1.0
    
[/code]

なのですが、表示させたい内容としては、  
indexで指定した順番で以下のように表示を行いたい、というものです。

[code]

      key data1 data2
    0 0.0   are  sore
    1 1.0  kore  dore
    
[/code]


CC BY-SA 4.0
2018-08-08T16:08:14.113
47358
2018-08-10T13:54:15.137
2018-08-10T13:44:23.563
15171
29652
question
python python3 pandas
DataFrameを作った際、indexの並びを固定化したい


`DataFrame`の列の順番が変わっても、次のようにすればすぐに元に戻せます。

[code]

    df = df[["key", "data1", "data2"]]
    
[/code]

`df.append`の所で列の順番が変わっているので、次のようにすれば列の順番は変わらなくなります。

[code]

    def create_csv():
        df = pd.DataFrame([], colums=["key", "data1", "data2"])
        data = [[0, "are", "sore"],[1,"kore","dore"]]
    
        for i in range(len(data)):
            add = pd.Series(data[i], index=["key", "data1", "data2"])
            df = df.append(add, ignore_index=True)
    
[/code]

また、コメントにあるように、配列から直接DataFrameを作成する方が簡単です。

[code]

    def create_csv():
        data = [[0, "are", "sore"],[1,"kore","dore"]]
        df = pd.DataFrame(data, colums=["key", "data1", "data2"])
    
[/code]


CC BY-SA 4.0
2018-08-10T13:54:15.137
47424
2018-08-10T13:54:15.137
15171
47358
answer