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