pandas 将整数0-31转换为单个字符

mspsb9vt  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(95)

我想取月份和日期的值,并以更短的格式保存它们。我目前将整数1-31转换为整数或字母的代码如下所示:

def make_one_char(x):
    list = [
        0, 
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        'a',
        'b',
        'c',
        'd',
        'e',
        'f',
        'g',
        'h',
        'i',
        'j',
        'k',
        'l',
        'm',
        'n',
        'o',
        'p',
        'q',
        'r',
        's',
        't',
        'u',
        'v',
        'w',
        'x',
        'y',
        'z'
    ]

    return list[x]

# conver them to single char
file_dates = [file_date.year, make_one_char(file_date.month), make_one_char(file_date.day)]

print(file_dates)

它的工作完全符合预期,但我忍不住想知道是否有一个更有效的方式做到这一点。

7kqas0il

7kqas0il1#

你可以用chr()函数按Unicode码点返回字符。如果你仔细观察Unicode character list,你可能会注意到从az的字母是连续的,它们的开始和结束码点分别是97122。所以,如果我们得到x > 10,我们应该返回chr(97 + x - 10),否则返回x本身。下面是更新的代码:

def make_one_char(x):
    if 0 <= x < 10:
        return x
    elif 10 <= x <= 35:
        return chr(87 + x)

另外请注意,在您的原始代码中,您使用list作为变量名,请不要隐藏内置名称。

相关问题