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

这是对my previous question 的补充。

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

例如:ACAE 将是 AC AD AE

【问题讨论】:

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

标签: python pandas dataframe


【解决方案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

【讨论】:

    猜你喜欢
    • 2022-11-24
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多