Цикл Python через DataFrame и словарь - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть один фрейм данных, который выглядит как ниже

0   1   2
A   X   +2
B   Y   +3
C   Z   +1+2

И словарь, который выглядит как ниже

    dict = { "1":"A", "2":"B", "3":"C", }

Я пытаюсь выполнить цикл для создания ниже (эффективно искать букву из словаря и заменять число во фрейме данных на правильную букву, сохраняя при этом «+» *

    0   1   2
    A   X   +B
    B   Y   +C
    C   Z   +A+B

Любые указатели будут высоко оценены!

Ответы [ 2 ]

3 голосов
/ 26 сентября 2019

Вы можете использовать заменить :

import pandas as pd

d = {"1": "A", "2": "B", "3": "C", }

data = [['A',  'X', '+2'],
        ['B',  'Y', '+3'],
        ['C',  'Z', '+1+2']]

df = pd.DataFrame(data=data)

df[2] = df[2].str.replace('\d+', lambda x: d[x.group()])

print(df)

Выход

   0  1     2
0  A  X    +B
1  B  Y    +C
2  C  Z  +A+B
0 голосов
/ 26 сентября 2019

Вы можете разделить и присоединиться к символу + (ниже, где переменная словаря d):

df['2'] = df['2'].apply(lambda s: '+'.join(d.get(n, "") 
                                           for n in s.split('+')))
>>> df
   0  1     2
0  A  X    +B
1  B  Y    +C
2  C  Z  +A+B
...