繁体   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