나는 다테프라임 '다음' ('df').
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(10, 5))
나는 열 (s) 이 추가 지정:
df['mean'] = df.mean(1)
어떻게 움직이십시오 정보기술 (it) 을 두고, 즉 '열' 짓궂군요 맨 첫 번째 열에 설정되었습니다 돈에 손을 대지 않고 다른 열 주문하십시오?
한 가지 간단한 방법, 열을 목록과 함께 약간만이라도 재지정합니다 다테프라임 필요에 따라 주었다.
이게 이제.
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']
어떤 식으로든 열 재정렬할 '' 운영까지도. This is how I 마지막 요소점 첫 번째 위치로 옮겼다.
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
그냥 할당하십시오 주문하십시오 열 이름을 거야.
In [39]: df
Out[39]:
0 1 2 3 4 mean
0 0.172742 0.915661 0.043387 0.712833 0.190717 1
1 0.128186 0.424771 0.590779 0.771080 0.617472 1
2 0.125709 0.085894 0.989798 0.829491 0.155563 1
3 0.742578 0.104061 0.299708 0.616751 0.951802 1
4 0.721118 0.528156 0.421360 0.105886 0.322311 1
5 0.900878 0.082047 0.224656 0.195162 0.736652 1
6 0.897832 0.558108 0.318016 0.586563 0.507564 1
7 0.027178 0.375183 0.930248 0.921786 0.337060 1
8 0.763028 0.182905 0.931756 0.110675 0.423398 1
9 0.848996 0.310562 0.140873 0.304561 0.417808 1
In [40]: df = df[['mean', 4,3,2,1]]
지금 # 39, & # 39 mean&;; 앞으로 열 나옵니다.
In [41]: df
Out[41]:
mean 4 3 2 1
0 1 0.190717 0.712833 0.043387 0.915661
1 1 0.617472 0.771080 0.590779 0.424771
2 1 0.155563 0.829491 0.989798 0.085894
3 1 0.951802 0.616751 0.299708 0.104061
4 1 0.322311 0.105886 0.421360 0.528156
5 1 0.736652 0.195162 0.224656 0.082047
6 1 0.507564 0.586563 0.318016 0.558108
7 1 0.337060 0.921786 0.930248 0.375183
8 1 0.423398 0.110675 0.931756 0.182905
9 1 0.417808 0.304561 0.140873 0.310562
어때.
df.insert(0, 'mean', df.mean(1))
이 경우,
df = df.reindex(columns=['mean',0,1,2,3,4])
정확히요 그리웠댔지 할 것이다.
df = df.reindex(columns=sorted(df.columns))
df = df.reindex(columns=(['opened'] + list([a for a in df.columns if a != 'opened']) ))
열 이름이 너무 길어서 경우 입력한 다음 새로운 통해 오더할 정수 바뀌엇어요 있는 위치를 지정할 수 있습니다.
데이터:
0 1 2 3 4 mean
0 0.397312 0.361846 0.719802 0.575223 0.449205 0.500678
1 0.287256 0.522337 0.992154 0.584221 0.042739 0.485741
2 0.884812 0.464172 0.149296 0.167698 0.793634 0.491923
3 0.656891 0.500179 0.046006 0.862769 0.651065 0.543382
4 0.673702 0.223489 0.438760 0.468954 0.308509 0.422683
5 0.764020 0.093050 0.100932 0.572475 0.416471 0.389390
6 0.259181 0.248186 0.626101 0.556980 0.559413 0.449972
7 0.400591 0.075461 0.096072 0.308755 0.157078 0.207592
8 0.639745 0.368987 0.340573 0.997547 0.011892 0.471749
9 0.050582 0.714160 0.168839 0.899230 0.359690 0.438500
일반 예:
new_order = [3,2,1,4,5,0]
print(df[df.columns[new_order]])
3 2 1 4 mean 0
0 0.575223 0.719802 0.361846 0.449205 0.500678 0.397312
1 0.584221 0.992154 0.522337 0.042739 0.485741 0.287256
2 0.167698 0.149296 0.464172 0.793634 0.491923 0.884812
3 0.862769 0.046006 0.500179 0.651065 0.543382 0.656891
4 0.468954 0.438760 0.223489 0.308509 0.422683 0.673702
5 0.572475 0.100932 0.093050 0.416471 0.389390 0.764020
6 0.556980 0.626101 0.248186 0.559413 0.449972 0.259181
7 0.308755 0.096072 0.075461 0.157078 0.207592 0.400591
8 0.997547 0.340573 0.368987 0.011892 0.471749 0.639745
9 0.899230 0.168839 0.714160 0.359690 0.438500 0.050582
new_order = [-1,0,1,2,3,4]
df = df[df.columns[new_order]]
print(df)
mean 0 1 2 3 4
0 0.500678 0.397312 0.361846 0.719802 0.575223 0.449205
1 0.485741 0.287256 0.522337 0.992154 0.584221 0.042739
2 0.491923 0.884812 0.464172 0.149296 0.167698 0.793634
3 0.543382 0.656891 0.500179 0.046006 0.862769 0.651065
4 0.422683 0.673702 0.223489 0.438760 0.468954 0.308509
5 0.389390 0.764020 0.093050 0.100932 0.572475 0.416471
6 0.449972 0.259181 0.248186 0.626101 0.556980 0.559413
7 0.207592 0.400591 0.075461 0.096072 0.308755 0.157078
8 0.471749 0.639745 0.368987 0.340573 0.997547 0.011892
9 0.438500 0.050582 0.714160 0.168839 0.899230 0.359690
주요 문제가 외곽진입 에로남이네 호출하십시오 동일한 코드를 여러 번 할 때마다 다른 결과를 만들 수 있으므로 주의해야 합니다:)
새로운 목록이 열 만드는 데 필요한 원하는 순서에 따라, df = df [열] '다음' 에서 열을 재정렬하려면 이 새 순.
cols = ['mean'] + [col for col in df if col != 'mean']
df = df[cols]
더 일반적인 외곽진입 사용할 수도 있습니다. 이 예에서 마지막 열 (timerevent 의해 - 1) 는 열 삽입됨 발매된다.
cols = [df.columns[-1]] + [col for col in df if col != df.columns[-1]]
df = df[cols]
이 경우 필요한 열의 사용할 수도 있습니다 외곽진입 순서재정리의 주문하십시오 있는 다테프라임.
inserted_cols = ['a', 'b', 'c']
cols = ([col for col in inserted_cols if col in df]
+ [col for col in df if col not in inserted cols])
df = df[cols]
난 그냥 내가 하고 싶은 붙여넣습니다 실행했음 이와 같은 질문을 나 추가 확정했다. 내가 좋아했잖아 reindex_axis () 는 '방식' 을 열 순서 변경. 이 협력했습니다:
df = df.reindex_axis(['mean'] + list(df.columns[:-1]), axis=1)
또 다른 방법으로 의견을 따라 @Jorge:
df = df.reindex(columns=['mean'] + list(df.columns[:-1]))
비록 '에 비해 약간 더 빠른 것 같다' '마이크로 벤치마크 reindex_axis 색인화 rmw 직접성' 같아 많이 있다.
이 함수는 모든 변수 운영할 필요가 없습니다 그냥 몇 명은 이 데이터세트를 오더하려면 나열.
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
두 개의 인수, 두 번째 열은 첫 번째 요소는 데이터세트를 걸리는 데이터 세트에서 보기할 전면판 줄 수 있다.
그래서 나는 내 경우 데이터 세트를 모함하는거 불렀으매 변수를 가진 A1, A2, B1, B2, 총 바뀌었다. I want to 재연됩니다 경우 총 전면판 그 다음 내가 할 일은.
frame = order(frame,['Total'])
I want to 재연됩니다 경우 총 날짜를 전면판 어졌다면 나는한다:
frame = order(frame,['Total','Date'])
편집:
또 다른 유용한 사용 방법은, 이 경우, re 는 낯선 테이블 및 you& # 39 와 같은 특정 기간에 com/go/4e6b330a_kr 바라보고 있는 그들을 VAR1, VAR2. 다음과 같은 항목을 실행할 수 있습니다.
frame = order(frame,[v for v in frame.columns if "VAR" in v])
@clocker: 내가 하고 싶은 대로 너회의 해결책은 아주 도움됐네 가져다줄래요 다테프라임 where I 에서 두 개의 열이 재연됩니다 앞에 있기 때문에 정확히 모르는 이름을 모두 열 커브로부터 생성되는 집어넣을 기술서임을 합니다. 따라서 같은 상황에 처해 있는 경우. 이름 앞에 열 것을 알고 난 후, 그들로 하여금 준수하십시오 " 의해 다음과 같은 일반적인 솔루션, 다른 모든 columns" 지었지.
df = df.reindex_axis(['Col1','Col2'] + list(df.columns.drop(['Col1','Col2'])), axis=1)
모두 사용할 수 있는 '축' 색인화 사용할 수 있습니다.
df
# 0 1 2 3 4 mean
# 0 0.943825 0.202490 0.071908 0.452985 0.678397 0.469921
# 1 0.745569 0.103029 0.268984 0.663710 0.037813 0.363821
# 2 0.693016 0.621525 0.031589 0.956703 0.118434 0.484254
# 3 0.284922 0.527293 0.791596 0.243768 0.629102 0.495336
# 4 0.354870 0.113014 0.326395 0.656415 0.172445 0.324628
# 5 0.815584 0.532382 0.195437 0.829670 0.019001 0.478415
# 6 0.944587 0.068690 0.811771 0.006846 0.698785 0.506136
# 7 0.595077 0.437571 0.023520 0.772187 0.862554 0.538182
# 8 0.700771 0.413958 0.097996 0.355228 0.656919 0.444974
# 9 0.263138 0.906283 0.121386 0.624336 0.859904 0.555009
df.reindex(['mean', *range(5)], axis=1)
# mean 0 1 2 3 4
# 0 0.469921 0.943825 0.202490 0.071908 0.452985 0.678397
# 1 0.363821 0.745569 0.103029 0.268984 0.663710 0.037813
# 2 0.484254 0.693016 0.621525 0.031589 0.956703 0.118434
# 3 0.495336 0.284922 0.527293 0.791596 0.243768 0.629102
# 4 0.324628 0.354870 0.113014 0.326395 0.656415 0.172445
# 5 0.478415 0.815584 0.532382 0.195437 0.829670 0.019001
# 6 0.506136 0.944587 0.068690 0.811771 0.006846 0.698785
# 7 0.538182 0.595077 0.437571 0.023520 0.772187 0.862554
# 8 0.444974 0.700771 0.413958 0.097996 0.355228 0.656919
# 9 0.555009 0.263138 0.906283 0.121386 0.624336 0.859904
이것은 모든 기능을 위해 이렇게 열 수.
def mean_first(df):
ncols = df.shape[1] # Get the number of columns
index = list(range(ncols)) # Create an index to reorder the columns
index.insert(0,ncols) # This puts the last column at the front
return(df.assign(mean=df.mean(1)).iloc[:,index]) # new df with last column (mean) first