Как добавить суффикс (или префикс) к каждому имени столбца?

Я хочу добавить _x снабдите суффиксом к каждому имени столбца как так:

featuresA = myPandasDataFrame.columns.values + '_x'

Как я делаю это? Кроме того, если я хотел добавить x_ как суффикс, как решение изменилось бы?

58
задан 29 January 2019 в 00:54

1 ответ

Изящная Оперативная Конкатенация

, При попытке изменить df оперативный, затем самое дешевое (и самый простой) опция существует дополнение непосредственно на [1 110] (т.е. использование 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
<час>

, Другая дешевая опция использует понимание списка с [1 112] форматирование (доступный на 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 не изменяется.

Добавляющие префиксы также сделан с [1 115].

df.add_prefix('some_prefix_')

   some_prefix_A  some_prefix_B
0              9             12
1              4              7
2              2              5
3              1              4

, Который также не изменяет df.

<час>

Критический анализ [1 117]

Это хорошие методы, при попытке выполнить объединение в цепочку метода:

df.some_method1().some_method2().add_*fix(...)

Однако add_prefixadd_suffix) создает копию цельный кадр данных, только для изменения заголовков. Если Вы полагаете, что это расточительно, но все еще хотят объединить в цепочку, можно звонить pipe:

def add_suffix(df):
    df.columns += '_some_suffix'
    return df

df.some_method1().some_method2().pipe(add_suffix)
12
ответ дан 1 November 2019 в 13:02

Другие вопросы по тегам:

Похожие вопросы: