reindex docs から:
オプションの塗りつぶしロジックを使用してDataFrameを新しいインデックスに適合させ、前のインデックスに値がない場所にNA/NaNを配置します。新しいインデックスが現在のものと同等で、copy = Falseでない限り、新しいオブジェクトが作成されます。
そのため、copy=False
を(!)に設定することで、Dataframe
を並べ替えられると思いました。ただし、コピーを取得し、それを元のオブジェクトに再度割り当てる必要があるようです。回避できれば、割り当て直したくありません( 理由はこの他の質問からです )。
これは私がやっていることです:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.Rand(5, 5))
df.columns = [ 'a', 'b', 'c', 'd', 'e' ]
df.head()
アウト:
a b c d e
0 0.234296 0.011235 0.664617 0.983243 0.177639
1 0.378308 0.659315 0.949093 0.872945 0.383024
2 0.976728 0.419274 0.993282 0.668539 0.970228
3 0.322936 0.555642 0.862659 0.134570 0.675897
4 0.167638 0.578831 0.141339 0.232592 0.976057
インデックスを再作成すると正しい出力が得られますが、元のオブジェクトに再度割り当てる必要があります。これは、copy=False
を使用して回避したいものです。
df.reindex( columns=['e', 'd', 'c', 'b', 'a'], copy=False )
その行の後の望ましい出力は:
e d c b a
0 0.177639 0.983243 0.664617 0.011235 0.234296
1 0.383024 0.872945 0.949093 0.659315 0.378308
2 0.970228 0.668539 0.993282 0.419274 0.976728
3 0.675897 0.134570 0.862659 0.555642 0.322936
4 0.976057 0.232592 0.141339 0.578831 0.167638
copy=False
が機能しないのはなぜですか?
それはまったく可能ですか?
python 3.5.3、pandas 0.23.3
少しずれたトピックですが、これにより列が配置し直されると思います
for i, colname in enumerate(list_of_columns_in_desired_order):
col = dataset.pop(colname)
dataset.insert(i, colname, col)