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