扩展类似 excel 列的值的范围

Posted

技术标签:

【中文标题】扩展类似 excel 列的值的范围【英文标题】:Expand range of excel-column-like values 【发布时间】:2022-01-23 23:58:01 【问题描述】:

这是对my previous question 的补充。

是否可以进一步对其进行修改以包含超出Z 的字母,就像 Excel 列一样?

例如:ACAE 将是 AC AD AE

【问题讨论】:

使用外部模块可以吗? 是的,我真的不知道那是什么意思,但如果你认为我能够运行它,那当然! 现在完成。检查答案;) 事实证明,您不需要任何外部模块。 @richardec 非常感谢。非常感谢您抽出时间来帮助我! 【参考方案1】:

这可以通过我从 javascript 翻译的一些函数来完成(来自 here):

df['Finish'] = df.apply(lambda x: ' '.join(intToExcelCol(c) for c in range(excelColToInt(x['Letter start']), excelColToInt(x['Letter finish']) + 1)), axis=1)

输出:

  Letter start Letter finish       Finish
0           AA            AD  AA AB AC AD
1           AC            AE     AC AD AE
2           AK            AM     AK AL AM

您需要的功能如下:

chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
clen = len(chars)

def intToExcelCol(number):
    colName = ''
    dividend = np.floor(abs(number))
    rest = 0

    while True:
        if dividend <= 0:
            break
        rest = int((dividend - 1) % clen)
        colName = chars[rest] + colName
        dividend = int((dividend - rest) / clen)

    return colName


def excelColToInt(colName):
    digits = colName.upper()
    number = 0

    for i in range(len(digits)):
        number += (chars.index(digits[i]) + 1) * pow(clen, len(digits) - i - 1)

    return number

【讨论】:

以上是关于扩展类似 excel 列的值的范围的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL多个范围 - 每个范围需要不同的答案

wer值的范围

如何打印具有满足范围值的列?

扩大 Pandas 日期范围

当它被绑定到调用函数中的const引用时,它的返回值的生命周期如何扩展到调用函数的范围?

sql修改字段值的范围