この記事の翻訳元:DataFrame列の順序を変更する方法?
私は私を持っている必要があり、以下ではDataFrame
(df
): 私は、次のしていますDataFrame
(df
):
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(10, 5))
割り当てによって 列を追加します。割り当てによって列を追加しました。
df['mean'] = df.mean(1)
どのようにI CAN Moveカラムmean
他手つかずで列の順序を残しまずコラムアットザフロント、SET IT AS IEのには? どのようにバーでしょうmean
最初の列に設定することについては、最上部に移動し、他の列の順序が変更されないまま?
#1階
参照:https : //stackoom.com/question/tAVR/ DataFrame列の順序を変更する方法
#2F
簡単な1つの方法は、列のリストをデータフレームに再割り当てし、必要に応じて再配置することです。 簡単な方法は、列のリストを使用してデータフレームを再割り当てし、必要に応じて再配置することです。
これはあなたが今持っているものです:これはあなたが今持っているものです :
In [6]: df
Out[6]:
0 1 2 3 4 mean
0 0.445598 0.173835 0.343415 0.682252 0.582616 0.445543
1 0.881592 0.696942 0.702232 0.696724 0.373551 0.670208
2 0.662527 0.955193 0.131016 0.609548 0.804694 0.632596
3 0.260919 0.783467 0.593433 0.033426 0.512019 0.436653
4 0.131842 0.799367 0.182828 0.683330 0.019485 0.363371
5 0.498784 0.873495 0.383811 0.699289 0.480447 0.587165
6 0.388771 0.395757 0.745237 0.628406 0.784473 0.588529
7 0.147986 0.459451 0.310961 0.706435 0.100914 0.345149
8 0.394947 0.863494 0.585030 0.565944 0.356561 0.553195
9 0.689260 0.865243 0.136481 0.386582 0.730399 0.561593
In [7]: cols = df.columns.tolist()
In [8]: cols
Out[8]: [0L, 1L, 2L, 3L, 4L, 'mean']
中国の文構造とcols
したい任意の方法で。 再編成されたcols
あなたが好きなように。 これは、最後の要素を最初の位置に移動した方法です。これは、最後の要素を最初の位置に移動した方法です 。
In [12]: cols = cols[-1:] + cols[:-1]
In [13]: cols
Out[13]: ['mean', 0L, 1L, 2L, 3L, 4L]
次に、データフレームを次のように並べ替えます。 次に、データフレームを次のように再配置します。
In [16]: df = df[cols] # OR df = df.ix[:, cols]
In [17]: df
Out[17]:
mean 0 1 2 3 4
0 0.445543 0.445598 0.173835 0.343415 0.682252 0.582616
1 0.670208 0.881592 0.696942 0.702232 0.696724 0.373551
2 0.632596 0.662527 0.955193 0.131016 0.609548 0.804694
3 0.436653 0.260919 0.783467 0.593433 0.033426 0.512019
4 0.363371 0.131842 0.799367 0.182828 0.683330 0.019485
5 0.587165 0.498784 0.873495 0.383811 0.699289 0.480447
6 0.588529 0.388771 0.395757 0.745237 0.628406 0.784473
7 0.345149 0.147986 0.459451 0.310961 0.706435 0.100914
8 0.553195 0.394947 0.863494 0.585030 0.565944 0.356561
9 0.561593 0.689260 0.865243 0.136481 0.386582 0.730399
#3階
どのように: どのように:
df.insert(0, 'mean', df.mean(1))
http://pandas.pydata.org/pandas-docs/stable/dsintro.html#column-selection-addition-deletion http://pandas.pydata.org/pandas-docs/stable/dsintro.html#column-selection -追加削除
#4F
前にすでにこの質問に答え、私は使用をお勧めしますので、今、放棄されていreindex_axis:
df.reindex(sorted(df.columns), axis=1)
#5F
次のようなこともできます:次のような こともできます:
df = df[['mean', '0', '1', '2', '3']]
あなたは列のリストを得ることができます:あなたは列のリストを得ることができます :
cols = list(df.columns.values)
出力は以下を生成します:出力は以下を生成し ます:
['0', '1', '2', '3', 'mean']
...最初の関数にドロップする前に手動で再配置するのは簡単 です...
#6階
この関数を使用すると、データセット内のすべての変数をリストする必要がなくなり、いくつ かの変数を並べ替えることができます。
def order(frame,var):
if type(var) is str:
var = [var] #let the command take a string or list
varlist =[w for w in frame.columns if w not in var]
frame = frame[var+varlist]
return frame
2つの引数を取ります。1つ目はデータセット、2つ目は前面に表示するデータセットの列です 。2つのパラメータがあります。1つ目はデータセット、2つ目は配置するパラメータです。データセットの最初の列。
したがって、私の場合、変数A1、A2、B1、B2、合計、および日付 を含む Frameというデータセットがあります。したがって、私の場合、変数A1、A2、 B1、B2、合計および日付。Totalを前面に表示したい場合は、次のことを行う必要があります 。Totalを最前面に表示したい場合は、次の手順を実行するだけです。
frame = order(frame,['Total'])
TotalとDateを前面 に表示したい場合は、次のようにします。「total」と「date」を最初に配置したい場合は、次のようにします。
frame = order(frame,['Total','Date'])
編集: 編集:
これを使用するもう1つの便利な方法は、見慣れないテーブルがあり、VAR1、VAR2などの特定の用語が含まれている変数を探している場合などです。 この関数の別の便利な使用方法は次のとおりです。この方法は、慣れていないテーブルがあり、VAR1、VAR2などの特定の用語を含む変数を探している場合は、次のようにすることができます。
frame = order(frame,[v for v in frame.columns if "VAR" in v])