programing

각 열 이름에 접미사(또는 접두사)를 추가하는 방법은 무엇입니까?

abcjava 2023. 7. 20. 21:39
반응형

각 열 이름에 접미사(또는 접두사)를 추가하는 방법은 무엇입니까?

추가합니다._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

반응형