簡體   English   中英

防止熊貓read_Excel / read_CSV自動分配(即推斷)索引

[英]Prevent Pandas read_Excel / read_CSV from assigning (i.e. inferring) an index automatically

完全是新手,這是我有史以來第一個提出的問題,因此對於任何無意的虛假行為,我們事先致歉。

我有一個Excel(xlsx)格式的大型(ish)數據集,我想導入到pandas數據框中。 數據具有列標題,但第一列沒有標題標簽。 這是excel工作表的樣子:

原始數據

我在Pandas中使用read_excel()讀取數據。 我正在使用的代碼是: df = pd.read_excel('Raw_Data.xlsx', sheetname=0, labels=None, header=0, index_col=None)

(我嘗試過index_col = false或0,但是,由於明顯的原因,它什么都沒有改變)

可以很好地選擇各列的標題,但在下圖中用紅色圈出的第一列被指定為索引。

錯誤的索引

我試圖從read_excel命令獲得的內容如下,索引用紅色圈出:

正確的索引

我還有其他的Excel工作表,我已使用read_excel()導入到pandas中,並且pandas自動添加了一個數字增量索引,而不是將其中一列推斷為索引。

這些excel工作表都沒有在列標題中缺少標簽,盡管我不確定這可能是這里的問題。

我了解可以在導入后使用reset_index()命令來獲取正確的索引。

想知道是否可以不必執行reset_index()和在read_excel()命令中完成此操作。 即無論如何都可以防止索引被推斷或像往常一樣強迫熊貓在索引列中添加。

先感謝您!

由於單元格A1中缺少值,我認為您不能僅使用read_excel函數來完成此操作。 如果要在使用pandas讀取文件之前向該單元格中插入一些內容,可以考慮如下使用openpyxl。

from openpyxl import load_workbook as load

path = 'Raw_Data.xlsx'
col_name = 'not_index'
cell = 'A1'

def write_to_cell(path, col_name, cell):

    wb = load(path)

    for sheet in wb.sheetnames:
        ws = wb[sheet]
        if ws[cell].value is None:
            ws[cell] = col_name

    wb.save(path)

暫無
暫無

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

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