簡體   English   中英

使用數據框將列表寫入新的Excel xlsx

[英]Writing a list to new excel xlsx with dataframes

我在尋找將列表寫入已加載的Excel工作表的最佳方法,然后將結果另存為xlsx時遇到了一些麻煩。 我要我的代碼執行的操作是獲取我創建的列表,並將它們放在已加載的工作簿的特定列中。 我認為使用數據框可能有更簡單的方法,但是我不知道如何做。 理想情況下,我想保存加載的工作簿的格式。

col_test = [1L, 2L, 3L, 4L, 5L]

我的代碼是這樣

import xlrt
from xlrd import open_workbook
rb = open_workbook("Excel FDT Master_01_update.xlsx")
s = rb.sheet_by_name('INPUT')
r = 5
for test in col_test:
    s.cell(row = r, column = 1).value = test
    r += 1
rb.save('didthiswork.xlsx')

該錯誤意味着Python在cell的定義中找不到名為row的參數。 如果我沒記錯的話,這是xlrd模塊。 讓我們看一下您試圖在此處調用的Sheet.cell()的API文檔。

cell(rowx, colx)

給定行和列中的單元格對象。

看來您只是錯誤地命名了參數。 將行更改為以下內容可以解決此問題。

s.cell(rowx = r, colx = 1).value = test

毋庸置疑,Python無法猜測您要鍵入的內容,因此,如果在確定確實存在錯誤時(例如此處的參數名稱)遇到錯誤,請務必閱讀文檔並檢查是否存在錯誤錯別字。 另外,將來發布所有您可以找到的相關信息,例如功能定義和所使用模塊的名稱。

這是一個版本,在anaconda之上無需額外安裝。 它並沒有保持樣式,但是您可以將復制/粘貼值恢復為原始xlsx。

大多數excel操縱器在保持原始文件完整方面存在問題。 也有很多解決方法,但是如果您希望它防水,則最終會找到適合您的特定解決方案,或者或多或少地重新編碼所有庫,因此這是不值得的。

擴展現有數據幀時,熊貓可能很難正確設置,但是總有幾種替代方法可以做到。 這是通過assign完成的,因此只需確保數據框的行數足夠長即可添加。

import pandas as pd

# read the excel
df = pd.read_excel('Geen titel 1.xlsx') # there are options to choose sheet
print('original df')
print(df)
# your data is not valid python syntax so let's assume it's strings
col_test = ['1L', '2L', '3L', '4L', '5L']
new_idx = range(max(len(col_test), len(df.index)))
df = df.reindex(new_idx) # now it will accommodate different lengths
print('reindexed df')
print(df)
df = df.assign(new_col=col_test) # new column added at right side
print('modified df')
print(df)
df.to_excel('the_new.xlsx')

打印輸出:

original df
   a  b
0  1  c
1  2  d
2  3  e
reindexed df
     a    b
0  1.0    c
1  2.0    d
2  3.0    e
3  NaN  NaN
4  NaN  NaN
modified df
     a    b new_col
0  1.0    c      1L
1  2.0    d      2L
2  3.0    e      3L
3  NaN  NaN      4L
4  NaN  NaN      5L

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM