Pandas에서 이름별로 열을 테이블 앞으로 이동
내 df는 다음과 같습니다.
Net Upper Lower Mid Zsore
Answer option
More than once a day 0% 0.22% -0.12% 2 65
Once a day 0% 0.32% -0.19% 3 45
Several times a week 2% 2.45% 1.10% 4 78
Once a week 1% 1.63% -0.40% 6 65
이름 ( "Mid")으로 열을 테이블의 맨 앞으로 인덱스 0으로 이동하는 방법은 다음과 같습니다. 다음과 같이 표시되어야합니다.
Mid Upper Lower Net Zsore
Answer option
More than once a day 2 0.22% -0.12% 0% 65
Once a day 3 0.32% -0.19% 0% 45
Several times a week 4 2.45% 1.10% 2% 78
Once a week 6 1.63% -0.40% 1% 65
내 현재 코드는 "df.columns.tolist ()"를 통해 인덱스별로 열을 이동하지만 이름으로 이동하고 싶습니다.
ix
목록을 전달하여 재정렬하는 데 사용할 수 있습니다 .
In [27]:
# get a list of columns
cols = list(df)
# move the column to head of list using index, pop and insert
cols.insert(0, cols.pop(cols.index('Mid')))
cols
Out[27]:
['Mid', 'Net', 'Upper', 'Lower', 'Zsore']
In [28]:
# use ix to reorder
df = df.ix[:, cols]
df
Out[28]:
Mid Net Upper Lower Zsore
Answer_option
More_than_once_a_day 2 0% 0.22% -0.12% 65
Once_a_day 3 0% 0.32% -0.19% 45
Several_times_a_week 4 2% 2.45% 1.10% 78
Once_a_week 6 1% 1.63% -0.40% 65
또 다른 방법은 열에 대한 참조를 가져 와서 맨 앞에 다시 삽입하는 것입니다.
In [39]:
mid = df['Mid']
df.drop(labels=['Mid'], axis=1,inplace = True)
df.insert(0, 'Mid', mid)
df
Out[39]:
Mid Net Upper Lower Zsore
Answer_option
More_than_once_a_day 2 0% 0.22% -0.12% 65
Once_a_day 3 0% 0.32% -0.19% 45
Several_times_a_week 4 2% 2.45% 1.10% 78
Once_a_week 6 1% 1.63% -0.40% 65
를 사용 loc
하여 ix
향후 pandas 버전에서 더 이상 사용되지 않을 것과 동일한 결과를 얻을 수도 있습니다 0.20.0
.
df = df.loc[:, cols]
pandas에서 df.reindex () 함수를 사용할 수 있습니다. df는
Net Upper Lower Mid Zsore
Answer option
More than once a day 0% 0.22% -0.12% 2 65
Once a day 0% 0.32% -0.19% 3 45
Several times a week 2% 2.45% 1.10% 4 78
Once a week 1% 1.63% -0.40% 6 65
열 이름 목록 정의
cols = df.columns.tolist()
cols
Out[13]: ['Net', 'Upper', 'Lower', 'Mid', 'Zsore']
열 이름을 원하는 곳으로 이동
cols.insert(0, cols.pop(cols.index('Mid')))
cols
Out[16]: ['Mid', 'Net', 'Upper', 'Lower', 'Zsore']
그런 다음 df.reindex()
함수를 사용 하여 재정렬
df = df.reindex(columns= cols)
출력 : df
Mid Upper Lower Net Zsore
Answer option
More than once a day 2 0.22% -0.12% 0% 65
Once a day 3 0.32% -0.19% 0% 45
Several times a week 4 2.45% 1.10% 2% 78
Once a week 6 1.63% -0.40% 1% 65
I didn't like how I had to explicitly specify all the other column in the other solutions so this worked best for me. Though it might be slow for large dataframes...?
df = df.set_index('Mid').reset_index()
Maybe I'm missing something, but a lot of these answers seem overly complicated. You should be able to just set the columns within a single list:
Column to the front:
df = df[ ['Mid'] + [ col for col in df.columns if col != 'Mid' ] ]
Or if instead, you want to move it to the back:
df = df[ [ col for col in df.columns if col != 'Mid' ] + ['Mid'] ]
Or if you wanted to move more than one column:
cols_to_move = ['Mid', 'Zsore']
df = df[ cols_to_move + [ col for col in df.columns if col not in cols_to_move ] ]
Here is a generic set of code that I frequently use to rearrange the position of columns. You may find it useful.
cols = df.columns.tolist()
n = int(cols.index('Mid'))
cols = [cols[n]] + cols[:n] + cols[n+1:]
df = df[cols]
To reorder the rows of a dataframe just use a list as follows.
df = df[['Mid', 'Net', 'Upper', 'Lower', 'Zsore']]
This makes it very obvious what was done when reading the code later. Also use:
df.columns
Out[1]: Index(['Net', 'Upper', 'Lower', 'Mid', 'Zsore'], dtype='object')
Then cut and paste to reorder.
ReferenceURL : https://stackoverflow.com/questions/25122099/move-column-by-name-to-front-of-table-in-pandas
'program story' 카테고리의 다른 글
Android 애플리케이션에서 현재 시간대 가져 오기 (0) | 2020.12.27 |
---|---|
Android 용 Spring RestTemplate으로 인증 된 POST 요청 만들기 (0) | 2020.12.27 |
PHP에서 숫자와 같은 문자를 증가시키는 방법은 무엇입니까? (0) | 2020.12.27 |
int8_t, int_least8_t 및 int_fast8_t의 차이점은 무엇입니까? (0) | 2020.12.27 |
C ++ 11의 유니 코드 (0) | 2020.12.26 |