Я хочу добавить _x
суффикс к имени каждого столбца, например:
featuresA = myPandasDataFrame.columns.values + '_x'
Как мне это сделать? Кроме того, если бы я хотел добавить x_
суффикс, как бы изменилось решение?
Я хочу добавить _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, вы можете использовать ее в цепочке вызовов.
inplace=True
опции параметра). В остальном идеально.
Если вы пытаетесь изменить 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
форматированием (доступно на 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)
new
или old
) вместо каждого столбца? Спасибо.
df = pd.DataFrame([[1,2,3]]*10)
-> df.columns
, тогда вы должны использоватьdf.add_suffix('_x')
df.columns = df.columns.astype(str) + '_x'
как показывает мой первый метод.
Я не видел этого решения, предложенного выше, поэтому добавляю его в список:
df.columns += '_x'
И вы можете легко адаптироваться к префиксному сценарию.
df = pd.DataFrame([[1,2,3]]*10)
-> df.columns
, тогда вы должны использоватьdf.add_suffix('_x')
Я знаю 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')
DataFrame.rename
.Прекращение поддержки add_prefix
иadd_suffix
В будущих версиях pandas add_prefix
и add_suffix
будут объявлены устаревшими . Новый рекомендованный метод заключается в использовании DataFrame.rename
:
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)