Ответ 1
Вы можете использовать понимание list
:
df.columns = [str(col) + '_x' for col in df.columns]
Есть также встроенные методы, такие как .add_suffix()
и .add_prefix()
как упомянуто в другом ответе.
Я хочу добавить суффикс _x
к каждому имени столбца следующим образом:
featuresA = myPandasDataFrame.columns.values + '_x'
Как мне это сделать? Кроме того, если бы я хотел добавить x_
в качестве суффикса, как бы изменилось решение?
Вы можете использовать понимание list
:
df.columns = [str(col) + '_x' for col in df.columns]
Есть также встроенные методы, такие как .add_suffix()
и .add_prefix()
как упомянуто в другом ответе.
Следующее - лучший способ добавить суффикс по моему мнению.
df = df.add_suffix('_some_suffix')
Поскольку это функция, которая вызывается в DataFrame и возвращает DataFrame, вы можете использовать ее в цепочке вызовов.
Если вы пытаетесь изменить df
на месте, то самым дешевым (и самым простым) вариантом является добавление на месте непосредственно в df.columns
(т. 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
(доступно на python3. 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]
Также возможно сделать добавление * исправлений во время цепочки методов. Чтобы добавить суффикс, используйте 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)