각 열 이름에 접미사(또는 접두사)를 추가하는 방법은 무엇입니까?
추가합니다._x
각 열 이름에 대한 접미사는 다음과 같습니다.
featuresA = myPandasDataFrame.columns.values + '_x'
이거 어떻게 하는 거지?추가로, 만약 내가 추가하고 싶다면.x_
접미사로서, 솔루션은 어떻게 변할까요?
제 생각에 접미사를 추가하는 가장 좋은 방법은 다음과 같습니다.
df = df.add_suffix('_some_suffix')
DataFrame에서 호출되고 DataFrame을 반환하는 함수이므로 호출 체인에서 사용할 수 있습니다.
를 사용할 수 있습니다.list
이해력:
df.columns = [str(col) + '_x' for col in df.columns]
다른 답변에서 언급한 것과 같은 기본 제공 방법도 있습니다.
우아한 내부 연결
수정하려는 경우df
인플레이스, 가장 저렴한 (그리고 가장 간단한) 옵션은 인플레이스 추가입니다.df.columns
(즉, 사용)Index.__iadd__
).
df = pd.DataFrame({"A": [9, 4, 2, 1], "B": [12, 7, 5, 4]})
df
A B
0 9 12
1 4 7
2 2 5
3 1 4
df.columns += '_some_suffix'
df
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
접두사를 추가하려면 다음과 같이 사용합니다.
df.columns = 'some_prefix_' + df.columns
df
some_prefix_A some_prefix_B
0 9 12
1 4 7
2 2 5
3 1 4
또 다른 저렴한 옵션은 목록 이해력을 사용하는 것입니다.f-string
포맷(python 3.6+에서 사용 가능).
df.columns = [f'{c}_some_suffix' for c in df]
df
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
접두사의 경우도 마찬가지로,
df.columns = [f'some_prefix{c}' for c in df]
메서드 체인
메서드 체인 중에 *fixes를 추가할 수도 있습니다.접미사를 추가하려면 다음을 사용합니다.DataFrame.add_suffix
df.add_suffix('_some_suffix')
A_some_suffix B_some_suffix
0 9 12
1 4 7
2 2 5
3 1 4
데이터 복사본을 반환합니다.IOW,df
수정되지 않았습니다.
접두사 추가도 다음과 같이 수행됩니다.DataFrame.add_prefix
.
df.add_prefix('some_prefix_')
some_prefix_A some_prefix_B
0 9 12
1 4 7
2 2 5
3 1 4
이것 또한 수정되지 않습니다.df
.
에 대한 비판add_*fix
메서드 체인을 수행하려는 경우 다음 방법이 좋습니다.
df.some_method1().some_method2().add_*fix(...)
하지만,add_prefix
(및add_suffix
)는 헤더를 수정하기 위해 전체 데이터 프레임의 복사본을 만듭니다.만약 당신이 이것이 낭비라고 생각하지만 여전히 연결을 원한다면, 당신은 전화할 수 있습니다.pipe
:
def add_suffix(df):
df.columns += '_some_suffix'
return df
df.some_method1().some_method2().pipe(add_suffix)
열 이름에 접미사(또는 접두사)를 추가하는 4가지 방법을 알고 있습니다.
1-df.columns = [str(col) + '_some_suffix' for col in df.columns]
또는
2-df.rename(columns= lambda col: col+'_some_suffix')
또는
3-df.columns += '_some_suffix'
훨씬 쉬운
또는, 가장 좋은 것:
3-df.add_suffix('_some_suffix')
위에서 제안한 솔루션을 본 적이 없으므로 목록에 추가합니다.
df.columns += '_x'
그리고 접두사 시나리오에 쉽게 적응할 수 있습니다.
사용
df = pd.DataFrame({'A': range(3), 'B': range(4, 7)})
print(df)
A B
0 0 4
1 1 5
2 2 6
사용.rename
와 함께axis=1
및 문자열 형식:
df.rename('col_{}'.format, axis=1)
# or df.rename(columns='col_{}'.format)
col_A col_B
0 0 4
1 1 5
2 2 6
실제로 열 이름을 덮어쓰려면 반환된 값을 다음 항목에 할당할 수 있습니다.df
:
df = df.rename('col_{}'.format, axis=1)
또는 사용inplace=True
:
df.rename('col_{}'.format, axis=1, inplace=True)
저는 이것이 제가 꽤 자주 사용하는 것이라고 생각했습니다. 예를 들어, 다음과 같습니다.
df = pd.DataFrame({'silverfish': range(3), 'silverspoon': range(4, 7),
'goldfish': range(10, 13),'goldilocks':range(17,20)})
동적으로 이름을 변경하는 방법:
color_list = ['gold','silver']
for i in color_list:
df[f'color_{i}']=df.filter(like=i).sum(axis=1)
출력:
{'silverfish': {0: 0, 1: 1, 2: 2},
'silverspoon': {0: 4, 1: 5, 2: 6},
'goldfish': {0: 10, 1: 11, 2: 12},
'goldilocks': {0: 17, 1: 18, 2: 19},
'color_gold': {0: 135, 1: 145, 2: 155},
'color_silver': {0: 20, 1: 30, 2: 40}}
판다는 또한 가지고 있습니다.add_prefix
방법과 aadd_suffix
방법.
언급URL : https://stackoverflow.com/questions/34049618/how-to-add-a-suffix-or-prefix-to-each-column-name
'programing' 카테고리의 다른 글
UUID 기본 키가 BINARY(16)인 MariaDB 테이블이 NULL이 아님 (0) | 2023.07.20 |
---|---|
가져오기 오류: 이름이 panda인 모듈이 없습니다. (0) | 2023.07.20 |
JSON_ARRAGEG 내부의 JSON_OBJ는 때때로 json 배열을 반환하고 때로는 string을 반환합니다. (0) | 2023.07.20 |
Python의 repr( ) 함수 이해 (0) | 2023.07.20 |
Python 튜플을 문자열로 변환 (0) | 2023.07.20 |