【问题标题】:Python - how to map a column to a sequence of alphabetical letters? [duplicate]Python - 如何将列映射到字母序列? [复制]
【发布时间】:2020-05-01 22:53:13
【问题描述】:

我在数据框中有一列,我想将其映射到一系列字母。

假设我在列中有以下 50 个值:

import pandas as pd
import numpy as np

data = pd.DataFrame(np.arange(50))

现在我想创建一个新列,其中数字 0 映射到 A,1 映射到 B,等等。我按照 this question 中的方法,但是当映射到字母 Z 时,它会转到一些非字母字符。这是映射代码:

data['new column'] = [chr(ord('a') + x).upper() for x in data.index]    

观察到 26 及以上的数字被映射到非字母字符。我们如何创建一个映射函数,以便映射将数字 26 重新映射到 AA、27 到 AB、28 到 AC 等等?

【问题讨论】:

    标签: python string pandas mapping


    【解决方案1】:
    import pandas as pd
    import numpy as np
    
    data = pd.DataFrame(np.arange(50))
    
    data["new column"] = [
        chr(ord('a') + x//26 - 1).upper() + chr(ord('a') + x%26).upper() if x >= 26
        else chr(ord('a') + x).upper()
        for x in data.index
    ]
    

    祝你好运

    【讨论】:

    • 是的,干得好。请注意,这是 Python3 代码。对于那些仍在(很快不受支持)Python2 的人,将“x//26”更改为“x/26”。
    • 谢谢大家,生成器解决方案也可以。 @Benoit Messiaen - 这个解决方案更简单,正是我想要的。
    猜你喜欢
    • 2017-03-06
    • 2016-08-31
    • 2017-07-24
    • 2021-06-03
    • 1970-01-01
    • 2020-10-17
    • 2011-01-25
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多