使用python中的特定单词映射代码编号

时间:2017-06-24 12:42:03

标签: python pandas

我有一个像这样的代码和数据(在数据框中):

32      A
33      B
34      C
35      D
36      E 
60      F

我有这样的数据(在熊猫系列中(那是字符串)):

60
32
32
32
32,33
35
34,35,36

现在我想要这样的输出(在数据框中):

60         F
32         A
32         A
32         A
32,33      A,B
35         D
34,35,36   C,D,E

我怎么能在python中做到这一点? 请帮帮我

2 个答案:

答案 0 :(得分:2)

您似乎需要使用list使用双嵌套dict的值替换list comprehension中的值。

对于第一列的dict需要set_index(如有必要),然后按[]选择列['b']

print (L)
[[60], [32], [32], [32], [32, 33], [35], [34, 35, 36]]

d = df1.set_index('a')['b'].to_dict()
print (d)
{32: 'A', 33: 'B', 34: 'C', 35: 'D', 36: 'E', 60: 'F'}

L1 = [[d[y] for y in x] for x in L]
print (L1)
[['F'], ['A'], ['A'], ['A'], ['A', 'B'], ['D'], ['C', 'D', 'E']]

df = pd.DataFrame({'a':L, 'b':L1})
print (df)
              a          b
0          [60]        [F]
1          [32]        [A]
2          [32]        [A]
3          [32]        [A]
4      [32, 33]     [A, B]
5          [35]        [D]
6  [34, 35, 36]  [C, D, E]

如果需要字符串添加join

L1 = [','.join([d[y] for y in x]) for x in L]
print (L1)
['F', 'A', 'A', 'A', 'A,B', 'D', 'C,D,E']

df = pd.DataFrame({'a':[','.join(x) for x in L], 'b':L1})
print (df)
          a      b
0        60      F
1        32      A
2        32      A
3        32      A
4     32,33    A,B
5        35      D
6  34,35,36  C,D,E

编辑:

如果Llist的{​​{1}}:

string

答案 1 :(得分:0)

我认为这就是你想要的。 列一个清单:

list = [[60], [32], [32], [32], [32, 33], [35], [34, 35, 36]]

使用字典:

dictionary = {60:"F", 32:"A", 33:"B", 34:"C", 35:"D", 36:"E"}

然后:

for element in list:
    string = ""
    for element2 in element:
        string += element2
        string += ","
    string = string[:-1]
    string += "   "
    for element2 in element:
        string += dictionary[element2]
        string += ","
    string = string[:-1]
    print(string)