【发布时间】:2021-11-21 02:43:53
【问题描述】:
这似乎相对简单,但我还没有找到可以回答我的问题的副本,或者具有所需功能的方法。
我有一个 Excel 电子表格,其中包含数据的每一列都有一个唯一的标题。我想使用pandas 通过将此标题字符串传递给函数来获取列的字母键。
例如,如果我将“输出参数”传递给函数,我想返回“M”:
我发现的最接近的方法是Convert spreadsheet number to column letter 的第二个答案中概述的xlsxwriter.utility.xl_col_to_name(index) 方法
这与我正在尝试做的非常相似,但是我的工作表中的列号不会保持不变(与标题不同,它会保持不变)。话虽这么说,一个可以根据标题返回列号的方法也可以工作,因为我可以应用上述内容。
pandas或xlsxwriter有没有可以处理上述情况的方法?
【问题讨论】:
-
您的用例是什么?如果您从工作表中间加载 pandas 数据框,例如使用
usecols选择列并使用skiprows省略某些行,您想返回原始列字母吗?或者只是将数据框中的第一列视为“A”列 -
@psychemedia 是的,需要原始列字母。电子表格的重点是充当“构建您自己的制造计算器”,因此应尽可能可定制(因此,很少假设是静态的,因此很难省略)。下面的答案正是我们所需要的。
-
所选答案不会这样做...如果将数据框保存到新的 Excel 文件中,它会预测数据框中的列字母是什么。如果数据框是从加载了
usecols=["B:E"]的电子表格创建的,xlsxwriter 会将第一个列标识为"A",就像将数据框写入新电子表格一样。 -
可以从工作表的中间将数据加载到数据框中。例如,表格可能出现在电子表格中,从 D1 开始,而不是 A1,并跨越列 D:G。
usecols=D:G参数将让您仅加载这些列。如果您随后保存了 df,或在数据帧上使用了xlsxwriter.utility.xl_col_to_name,它将作为带有 cols A:D 的工作表返回。我试图澄清您是否需要识别原始电子表格中的列。 -
我还值得注意的是,所有
xlsxwriter实用程序函数都在执行从数据框中检索到的列索引号并将其转换为列名形式:github.com/jmcnamara/XlsxWriter/blob/…
标签: python excel pandas dataframe xlsxwriter