Перебор каждого фрейма данных в списке фреймов данных и изменение имени первого столбца

Я пытаюсь перебрать список фреймов данных и сделать две вещи: заменить пробелы на «_» (что я и сделал) и добавить суффикс к первому столбцу каждого фрейма данных. Я знаю, что могу получить доступ к первому столбцу каждого кадра данных через строку печати в приведенном ниже цикле, но у меня возникли проблемы с добавлением суффикса к первому столбцу. Может кто-нибудь помочь?

Пример данных:

import pandas as pd

px_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'],
        'A df': [58.63, 21.25, 19.17, 18.8],
        'B df': [35,105,27,98]}

SC_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'],
        'A df': [20.50, 6, 82, 74.6],
        'B df': [74,62,8,99]}

SMA_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'],
        'A df': [2, 95.3, 39, 68.27],
        'B df': [58,37,74,11]}

px = pd.DataFrame(px_data)
SC = pd.DataFrame(SC_data)
SMA = pd.DataFrame(SMA_data)

dfs=[px,SC,SMA]
   
for i in range(len(dfs)):
    dfs[i].columns = dfs[i].columns.str.replace(' ', '_')
    print(dfs[i].columns[0])

🤔 А знаете ли вы, что...
Python обладает обширной документацией и активным сообществом разработчиков.


2
114
2

Ответы:

Возможное решение, использующее list comprehension для воссоздания имен столбцов:

for df in [px, SC, SMA]:
    df.columns = [
        'Date_suf' if i == 0 else x.replace(' ', '_')
        for i, x in enumerate(df.columns)]

Или даже лучше, как предлагает @iBeMeltin в комментарии ниже и которому я благодарен:

for df in [px, SC, SMA]:
    df.columns = [
        x + '_suffix' if i == 0 else x.replace(' ', '_')
        for i, x in enumerate(df.columns)]

Решено

После замены пробелов подчеркиванием вы можете добавить суффикс к первым столбцам каждого кадра данных следующим образом:

first_column = dfs[i].columns[0] # get first column
dfs[i].rename(columns = {first_column: first_column + '_suffix'}, inplace=True) # Add a suffix to the first column