Запись в Excel с Python и сохранение ключевой ячейки в Python

#python #excel

#питон #превосходить

Вопрос:

Я моделирую изменение определенного значения ячейки в Excel путем изменения 3 соседних столбцов в Excel с помощью команд через Python. Значения этих трех столбцов будут выбраны из комбинации значений 12 * 11 * 9 (1188 итераций).

Основной лист Excel и доступные столбцы

Столбцы, доступные для столбца Катода

Колонки, доступные для анодной колонки

Столбцы, доступные для столбца Lam

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

 import pandas as pd    path="C:\Users\MuellerM\CSV\Book1.xlsx"  dfff = pd.read_excel('C:\Users\MuellerM\CSV\Book1.xlsx', sheet_name='Sheet1',header=0, engine='openpyxl')  kathode_cols = pd.read_excel('C:\Users\MuellerM\CSV\Book1.xlsx',sheet_name='Katodes',header=0, engine='openpyxl')  anode_cols = pd.read_excel('C:\Users\MuellerM\CSV\Book1.xlsx',sheet_name='Anodes',header=0, engine='openpyxl')  Lam_cols = pd.read_excel('C:\Users\MuellerM\CSV\Book1.xlsx',sheet_name='Lambs',header=0, engine='openpyxl')  for i in range(len(kathode_cols.columns)):  dfff.loc[:, 'Katode'] = kathode_cols.loc[:, kathode_cols.columns[i]]  for j in range(len(anode_cols.columns)):  dfff.loc[:, 'Anode'] = anode_cols.loc[:, anode_cols.columns[j]]  for k in range(len(Lam_cols.columns)):  dfff.loc[:, 'Lam'] = Lam_cols.loc[:, Lam_cols.columns[k]]  KeyValue{i,j,k}=dfff['Key'][0]  

Я только начал моделировать на Python, надеюсь, то, о чем я спрашиваю, не слишком сложно.

Ответ №1:

Я думаю, сначала вам нужно указать путь к вашему файлу, чтобы read_excel :

 dfff = pd.read_excel('path/to/your/file.xslx', sheet_name='Sheet1',  header=0)  

и чем вы могли бы хранить другие значения в разных кадрах данных:

 kathode_cols = pd.read_excel('path/to/kathode_columns.xslx',  sheet_name=lt;whatever sheetname you usedgt;,  header=0)  

и так далее для других файлов.

И чем вы могли бы сказать что-то вроде:

 for i in range(len(kathode_cols.columns)):  dfff.loc[:, 'Kathode'] = kathode_cols.loc[:, kathode_cols.columns[0]]  # do some further calculations...  

Что должно заменить значения dff в столбце «Катод» значениями в одном из столбцов «kathode_columns». И чем вы можете заняться дальнейшими расчетами или чем бы вы ни планировали заняться.

Надеюсь, это вам поможет?

Редактировать:

небольшой пример, показывающий вам, что я имею в виду. У меня нет ваших данных, и я был слишком ленив, чтобы печатать, поэтому я просто использовал некоторые фантастические цифры

 import pandas as pd  # making your DataFrame dfff = {'Kathode': [0 for _ in range(10)],  'Anode': [2 for _ in range(10)],  'Lam': [4 for _ in range(10)]}  dfff = pd.DataFrame(dfff)  # making the other DataFrames containing the different comuns kathode_cols = {i: [(1.5 i)*j for j in range(10)] for i in range(5)} kathode_cols = pd.DataFrame(kathode_cols)  anode_cols = {i: [(0.5 i)*j for j in range(10)] for i in range(5)} anode_cols= pd.DataFrame(anode_cols)  lam_cols = {i: [(1 i)*j for j in range(10)] for i in range(5)} lam_cols= pd.DataFrame(lam_cols)  # here go your results results = []  # iterate throug all the possible combinations for a in kathode_cols.columns:  dfff.loc[:, 'Kathode'] = kathode_cols[a]  for b in anode_cols.columns:  dfff.loc[:, 'Anode'] = anode_cols[b]  for c in lam_cols:  dfff.loc[:, 'Lam'] = lam_cols[c]  # do your calculations here  result = dfff['Kathode'].sum()   dfff['Anode'].sum() - 2*dfff['Lam'].sum()  # store your results  results.append(result)   

Это делает некоторые фантастические вычисления с различными столбцами и сохраняет их в списке — все в python. Это, конечно, не самая эффективная реализация, но я думаю, что она должна это сделать.

Надеюсь, это вам поможет

Комментарии:

1. Андре, это, безусловно, мне очень помогает. Но как я могу повторять различные комбинации столбцов и сохранять значение ключа (значение ячейки в excel) для каждой итерации? В принципе, я ничего математически не вычисляю в Python, а только в Excel.

2. вам действительно нужно оставаться в Excel? Потому что я понятия не имею, как запустить вычисление в Esxcel из скрипта python. Если это возможно, я бы рекомендовал вам просто остаться в python. Я подготовлю для вас небольшой пример сценария, показывающий вам, что я имею в виду 😉