[PYTHON] 판다 열 순서를 재 배열하는 방법?
PYTHON판다 열 순서를 재 배열하는 방법?
>>> df =DataFrame({'a':[1,2,3,4],'b':[2,4,6,8]})
>>> df['x']=df.a + df.b
>>> df['y']=df.a - df.b
>>> df
a b x y
0 1 2 3 -1
1 2 4 6 -2
2 3 6 9 -3
3 4 8 12 -4
이제 'x', 'y'열을 첫 번째 열과 두 번째 열로 만드는 열 순서를 재정렬하려고합니다.
>>> df = df[['x','y','a','b']]
>>> df
x y a b
0 3 -1 1 2
1 6 -2 2 4
2 9 -3 3 6
3 12 -4 4 8
그러나 긴 열 'a', 'b', 'c', 'd'.....가 있으면 열을 명시 적으로 나열하고 싶지 않습니다. 어떻게해야합니까?
또는 판다는 set_column_sequence (dataframe, col_name, seq)와 같은 함수를 제공하여 set_column_sequence (df, 'x', 0) 및 set_column_sequence (df, 'y', 1)를 수행 할 수 있습니까?
해결법
-
==============================
1.다음과 같이 할 수도 있습니다.
다음과 같이 할 수도 있습니다.
df = df[['x', 'y', 'a', 'b']]
다음을 사용하여 열 목록을 가져올 수 있습니다.
cols = list(df.columns.values)
출력 결과는 다음과 같습니다.
['a', 'b', 'x', 'y']
... 그러면 첫 번째 함수에 놓기 전에 수동으로 다시 정렬하기 쉽습니다.
-
==============================
2.우아한 기본 제공 기능이있을 수 있지만 (아직 찾지 못했습니다). 당신은 하나를 쓸 수 있습니다 :
우아한 기본 제공 기능이있을 수 있지만 (아직 찾지 못했습니다). 당신은 하나를 쓸 수 있습니다 :
# reorder columns def set_column_sequence(dataframe, seq, front=True): '''Takes a dataframe and a subsequence of its columns, returns dataframe with seq as first columns if "front" is True, and seq as last columns if "front" is False. ''' cols = seq[:] # copy so we don't mutate seq for x in dataframe.columns: if x not in cols: if front: #we want "seq" to be in the front #so append current column to the end of the list cols.append(x) else: #we want "seq" to be last, so insert this #column in the front of the new column list #"cols" we are building: cols.insert(0, x) return dataframe[cols]
예를 들어, set_column_sequence (df, [ 'x', 'y'])는 원하는 결과를 리턴합니다.
대신에 DataFrame 끝에서 seq를 "front = False"로 전달하십시오.
-
==============================
3.
def _col_seq_set(df, col_list, seq_list): ''' set dataframe 'df' col_list's sequence by seq_list ''' col_not_in_col_list = [x for x in list(df.columns) if x not in col_list] for i in range(len(col_list)): col_not_in_col_list.insert(seq_list[i], col_list[i]) return df[col_not_in_col_list] DataFrame.col_seq_set = _col_seq_set
-
==============================
4.다음을 수행 할 수 있습니다.
다음을 수행 할 수 있습니다.
df =DataFrame({'a':[1,2,3,4],'b':[2,4,6,8]}) df['x']=df.a + df.b df['y']=df.a - df.b
이런 식으로 원하는 순서대로 열 제목을 만듭니다.
column_titles = ['x','y','a','b'] df.reindex(columns=column_titles)
이렇게하면 원하는 출력을 얻을 수 있습니다.
-
==============================
5.나는 당신이 아마도 drop (column을 삭제하기 위해)을 사용하고 position에 컬럼을 삽입하기 위해 insert를 사용한다고 말하는 것을하기위한 함수를 작성하기를 제안한다. 설명하는 것을 수행 할 기존 API 함수가 없습니다.
나는 당신이 아마도 drop (column을 삭제하기 위해)을 사용하고 position에 컬럼을 삽입하기 위해 insert를 사용한다고 말하는 것을하기위한 함수를 작성하기를 제안한다. 설명하는 것을 수행 할 기존 API 함수가 없습니다.
-
==============================
6.색인에서 목록을 뺀 것이 원래 색인의 순서를 유지하지 않는다면이 솔루션을 무시해도 좋습니다.
색인에서 목록을 뺀 것이 원래 색인의 순서를 유지하지 않는다면이 솔루션을 무시해도 좋습니다.
In [61]: df.reindex(columns=pd.Index(['x', 'y']).append(df.columns - ['x', 'y'])) Out[61]: x y a b 0 3 -1 1 2 1 6 -2 2 4 2 9 -3 3 6 3 12 -4 4 8
from https://stackoverflow.com/questions/12329853/how-to-rearrange-pandas-column-sequence by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬으로 UUID v1에서 시간 추출하기 (0) | 2018.11.02 |
---|---|
[PYTHON] 파이썬 : __getattr __ ()을 구현하는 방법? (0) | 2018.11.02 |
[PYTHON] matplotlib - 이미지를 변수에 저장 (0) | 2018.11.02 |
[PYTHON] "% s"% 형식과 "{0}". format () vs "?"형식 (0) | 2018.11.02 |
[PYTHON] X에서 활성 창 제목 가져 오기 (0) | 2018.11.02 |