将字典应用于具有多个值的列

Mis*_*sha 5 python dictionary pandas

是否可以将字典应用于具有多个值的列?

    Unit    Code
0   243     A
1   106     B
2   678     C
3   852     A, B
4   239     A, C
5   217     A, B, C
6   642     D
7   932     E, F, G, H
8   213     A, C, E, H
Run Code Online (Sandbox Code Playgroud)

如果我的字典是这样的......

    Unit    Code
0   243     A
1   106     B
2   678     C
3   852     A, B
4   239     A, C
5   217     A, B, C
6   642     D
7   932     E, F, G, H
8   213     A, C, E, H
Run Code Online (Sandbox Code Playgroud)

我应用之后...

    dictex = {
        'A' : 'Alpha',
        'B' : 'Bravo',
        'C' : 'Charlie',
        'D' : 'Delta',
        'E' : 'Echo',
        'F' : 'Foxtrot',
        'G' : 'Golf',
        'H' : 'Hotel',
        None : 'NULL'
    }

Run Code Online (Sandbox Code Playgroud)

我得到以下内容(这不是我想要的)。

    Unit    Code         Phonetic
0   243     A            Alpha
1   106     B            Bravo
2   678     C            Charlie
3   852     A, B         NaN
4   239     A, C         NaN
5   217     A, B, C      NaN
6   642     D            Delta
7   932     E, F, G, H   NaN
8   213     A, C, E, H   NaN
Run Code Online (Sandbox Code Playgroud)

我想要的是以下内容。

    Unit    Code        Phonetic
0   243     A           Alpha
1   106     B           Bravo
2   678     C           Charlie
3   852     A, B        Alpha, Bravo
4   239     A, C        Alpha, Charlie
5   217     A, B, C     Alpha, Bravo, Charlie
6   642     D           Delta
7   932     E, F, G, H  Echo, Foxtrot, Golf, Hotel
8   213     A, C, E, H  Alpha, Charlie, Echo, Hotel
Run Code Online (Sandbox Code Playgroud)

如何将字典映射到列中的每个值?

And*_*ely 3

尝试:

df["Phonetic"] = df["Code"].apply(
    lambda x: ", ".join(dictex.get(v) for v in map(str.strip, x.split(",")))
)
print(df)
Run Code Online (Sandbox Code Playgroud)

印刷:

   Unit        Code                     Phonetic
0   243           A                        Alpha
1   106           B                        Bravo
2   678           C                      Charlie
3   852        A, B                 Alpha, Bravo
4   239        A, C               Alpha, Charlie
5   217     A, B, C        Alpha, Bravo, Charlie
6   642           D                        Delta
7   932  E, F, G, H   Echo, Foxtrot, Golf, Hotel
8   213  A, C, E, H  Alpha, Charlie, Echo, Hotel
Run Code Online (Sandbox Code Playgroud)