Programing

pandas DataFrame에서 특정 열 이름 변경

crosscheck 2020. 5. 20. 21:29
반응형

pandas DataFrame에서 특정 열 이름 변경


에서 지정된 열 이름을 변경하는 우아한 방법을 찾고있었습니다 DataFrame.

데이터 재생 ...

import pandas as pd
d = {
         'one': [1, 2, 3, 4, 5],
         'two': [9, 8, 7, 6, 5],
         'three': ['a', 'b', 'c', 'd', 'e']
    }
df = pd.DataFrame(d)

내가 지금까지 찾은 가장 우아한 솔루션 ...

names = df.columns.tolist()
names[names.index('two')] = 'new_name'
df.columns = names

나는 간단한 원 라이너를 기대하고 있었다 ...이 시도는 실패했다 ...

df.columns[df.columns.tolist().index('one')] = 'another_name'

모든 힌트를 감사하게 받았습니다.


하나의 라이너가 존재합니다 :

In [27]: df=df.rename(columns = {'two':'new_name'})

In [28]: df
Out[28]: 
  one three  new_name
0    1     a         9
1    2     b         8
2    3     c         7
3    4     d         6
4    5     e         5

다음은 rename메소드 의 docstring입니다 .

정의 : df.rename (self, index = None, columns = None, copy = True, inplace = False)
독 스트링 :
입력 기능을 사용하여 색인 및 / 또는 열 변경 또는
기능. 함수 / dict 값은 고유해야합니다 (1 대 1). 라벨이 아님
dict / Series에 포함 된 내용은 그대로 유지됩니다.

매개 변수
----------
index : dict-like 또는 function, 선택적
    인덱스 값에 적용 할 변환
열 : dict-like 또는 function, 선택적
    열 값에 적용 할 변환
copy : 부울, 기본 True
    기본 데이터도 복사
inplace : 부울, 기본 False
    새 DataFrame을 반환할지 여부 True이면 복사 값은
    무시되었습니다.

또한보십시오
--------
Series.rename

보고
-------
이름 변경 : DataFrame (새 객체)

이후 inplace인수를 사용할 수, 당신은 복사 자체에 원래의 데이터 프레임 다시 할당해야하지만, 같은 다음하지 않는다 :

df.rename(columns={'two':'new_name'}, inplace=True)

이건 어떤가요?

df.columns.values[2] = "new_name"

팬더 0.21은 이제 축 매개 변수를 갖습니다

rename 메소드는 나머지 팬더 API의 대부분과 일치하는 축 매개 변수를 얻었습니다.

따라서 이것 외에도

df.rename(columns = {'two':'new_name'})

넌 할 수있어:

df.rename({'two':'new_name'}, axis=1)

또는

df.rename({'two':'new_name'}, axis='columns')

어떤 열이 (첫 번째 / 두 번째 / n 번째) 열인지 알면 비슷한 질문에 게시 된이 솔루션은 이름이 지정되거나 이름이 지정되지 않은 한 줄에 상관없이 작동합니다. https://stackoverflow.com/a/26336314/ 4355695

df.rename(columns = {list(df)[1]:'new_name'}, inplace=True)
# 1 is for second column (0,1,2..)

For renaming the columns here is the simple one which will work for both Default(0,1,2,etc;) and existing columns but not much useful for a larger data sets(having many columns).

For a larger data set we can slice the columns that we need and apply the below code:

df.columns = ['new_name','new_name1','old_name']

Following short code can help:

df3 = df3.rename(columns={c: c.replace(' ', '') for c in df3.columns})

Remove spaces from columns.


pandas version 0.23.4

df.rename(index=str,columns={'old_name':'new_name'},inplace=True)

For the record:

omitting index=str will give error replace has an unexpected argument 'columns'


Another option would be to simply copy & drop the column:

df = pd.DataFrame(d)
df['new_name'] = df['two']
df = df.drop('two', axis=1)
df.head()

After that you get the result:

    one three   new_name
0   1   a       9
1   2   b       8
2   3   c       7
3   4   d       6
4   5   e       5

참고URL : https://stackoverflow.com/questions/20868394/changing-a-specific-column-name-in-pandas-dataframe

반응형