【问题标题】:Python - Append letters in alphabetical order based on specific variable to dataframePython - 根据特定变量按字母顺序将字母附加到数据框
【发布时间】:2021-11-23 18:02:10
【问题描述】:

我想将一个字母(按字母顺序)附加到我的数据框中,从我存储在变量中的特定字母开始。

当前数据框:

col1 
data1
data2
data3

要分配的变量(可以是字母表中的任何字母)

variable ='D'

作为数据帧的期望输出

col1  | col2
data1 | E
data2 | F
data3 | G

我可以使用下面的代码分配 ABCDE 等。对于我的情况,我必须从一个特定的字母中分配它(例如,如果字母 B 那么下一个应该是 C


from string import ascii_uppercase as ABC 
d = dict(zip(ABC[:len(df)], df.col1)) 

期望的输出为字典

output = {'E': 'data1', 'F': 'data2', 'G': 'data3'} 

有人可以指导我吗?

【问题讨论】:

    标签: python pandas dictionary


    【解决方案1】:

    使用ord创建ascii码的起点

    start_ascii = ord(variable) + 1
    

    使用chr 映射到生成的ord

    df['col2'] = list(map(chr, range(start_ascii, start_ascii + df.shape[0])))
    

    数据框变成

        col1 col2
    0  data1    E
    1  data2    F
    2  data3    G
    

    转换成字典

    dict(zip(df.col2, df.col1))
    

    输出

    {'E': 'data1', 'F': 'data2', 'G': 'data3'}
    

    【讨论】:

      【解决方案2】:

      您可以使用RangeIndex:

      df["new"] = (df.index+ord(variable)+1).map(chr)
      
      print (df.set_index("new")["col1"].to_dict())
      
      {'E': 'data1', 'F': 'data2', 'G': 'data3'}
      

      【讨论】:

      • 谢谢 - 我不断收到:ord() expected string of length 1, but NoneType found 我的变量是:var = A - 我需要在此处添加引号还是什么?
      • 请忽略 - 一旦我删除了上面代码中的 print 函数,它就起作用了
      • 请注意,如果数据帧索引不以 0 开头或未排序,则此代码可能无法按预期工作。
      猜你喜欢
      • 2021-10-10
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      相关资源
      最近更新 更多