pandasに新しい値を書き込むことでExcelシートを更新するのに問題があります。MySheet1.xlsxから値を読み取る既存のフレームdf1が既にあるので、これは新しい必要があります。データフレームまたは何らかの方法で既存のものをコピーして上書きします。
スプレッドシートは次の形式です。
python list:values_list = [12.34、17.56、12.45]。私の目標は、Col_Cヘッダーの下にリスト値を垂直に挿入することです。現在、データフレーム全体を水平に上書きし、現在の値。
df2 = pd.DataFrame({'Col_C': values_list})
writer = pd.ExcelWriter('excelfile.xlsx', engine='xlsxwriter')
df2.to_Excel(writer, sheet_name='MySheet1')
workbook = writer.book
worksheet = writer.sheets['MySheet1']
この最終結果を取得する方法は?ありがとうございました!
以下に、pandasとopenpyxlモジュール (Openpyxl Docs)) を使用して既存の.xlsxブックを変更する方法の完全に再現可能な例を示しました。
最初に、デモンストレーションのために、test.xlsxというブックを作成します。
from openpyxl import load_workbook
import pandas as pd
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')
wb = writer.book
df = pd.DataFrame({'Col_A': [1,2,3,4],
'Col_B': [5,6,7,8],
'Col_C': [0,0,0,0],
'Col_D': [13,14,15,16]})
df.to_Excel(writer, index=False)
wb.save('test.xlsx')
これは、この時点で予想される出力です。
この2番目の部分では、既存のワークブック( 'test.xlsx')を読み込み、3番目の列を異なるデータで変更します。
from openpyxl import load_workbook
import pandas as pd
df_new = pd.DataFrame({'Col_C': [9, 10, 11, 12]})
wb = load_workbook('test.xlsx')
ws = wb['Sheet1']
for index, row in df_new.iterrows():
cell = 'C%d' % (index + 2)
ws[cell] = row[0]
wb.save('test.xlsx')
これは最後に期待される出力です:
私の意見では、最も簡単な解決策は、Excelをパンダのデータフレームとして読み取り、それを変更してExcelとして書き出すことです。たとえば、次のとおりです。
コメント:
Import pandas aspd。Excelシートをpandas data-frame called。目的の列(長さが同じであることを確認してください)Excelとしてデータフレームを保存し、古いExcelを上書きするか、新しいExcelを作成します。
コード:
import pandas as pd;
ExcelDataInPandasDataFrame = pd.read_Excel("./YourExcel.xlsx");
YourDataInAList = [12.34,17.56,12.45];
ExcelDataInPandasDataFrame ["Col_C"] = YourDataInAList ;
ExcelDataInPandasDataFrame .to_Excel("./YourNewExcel.xlsx",index=False);