Python 用嵌套字典值替换DataFrame列

Python 用嵌套字典值替换DataFrame列,python,pandas,dictionary,Python,Pandas,Dictionary,我正在尝试替换此数据帧的“starters”列 starters roster_id Bob 3086 Bob 1234 Cam 6130 ... ... 用这样一个大的嵌套dict中的播放器名称。“启动器”列中的值是键 { "3086": { "team": "NE", "

我正在尝试替换此数据帧的“starters”列

             starters
roster_id         
Bob            3086
Bob            1234
Cam            6130
...            ...
用这样一个大的嵌套dict中的播放器名称。“启动器”列中的值是键

{
  "3086": {
    "team": "NE",
    "player_id":"3086",
    "full_name": "tombrady",
     },
  "1234": {
    "team": "SEA",
    "player_id":"1234",
    "full_name": "RussellWilson",
     },
  "6130": {
    "team": "BUF",
    "player_id":"6130",
    "full_name": "DevinSingletary",
     },

  ...
}
我尝试使用DataFrame.replace(dict)和DataFrame.map(dict),但这会返回所有播放器信息,而不仅仅是名称


有没有一种方法可以用嵌套的dict实现这一点?谢谢。

我不确定我是否正确理解了你的问题。您是否尝试过使用dict['full_name']而不是简单的dict?

让df作为数据帧,d作为字典,然后您可以使用轴1上pandas的
应用
来更改列

df.apply(lambda x: d[str(x.starters)]['full_name'], axis=1)

使用
series.map
尝试
pd.concat

>>> pd.concat([
        df,
        pd.DataFrame.from_records(
                  df.astype(str)
                    .starters
                    .map(dct)
                    .values
              ).set_index(df.index)
    ], axis=1)

           starters team player_id        full_name
roster_id                                          
Bob            3086   NE      3086         tombrady
Bob            1234  SEA      1234    RussellWilson
Cam            6130  BUF      6130  DevinSingletary

谢谢你的帮助!我对python相当陌生,所以没有想到lambda函数。工作完美