为了账号安全,请及时绑定邮箱和手机立即绑定

如何映射到 pandas 字典中的多个值

如何映射到 pandas 字典中的多个值

开满天机 2024-01-16 10:25:10
我有以下内容pandas df:NameJackAlexJackieSusan我还有以下命令:d = {'Jack':['Male','22'],'Alex':['Male','26'],'Jackie':['Female','28'],'Susan':['Female','30']}Gender我想为和添加两列,Age以便我的df回报:Name      Gender    AgeJack      Male       22Alex      Male       26Jackie    Female     28Susan     Female     30我努力了:df['Gender'] = df.Name.map(d[0])df['Age'] = df.Name.map(d[1])但没有这样的运气。任何想法或帮助将不胜感激!谢谢!
查看完整描述

4 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

df['Gender'] = df.Name.map(lambda x: d[x][0])
df['Age'] = df.Name.map(lambda x: d[x][1])


查看完整回答
反对 回复 2024-01-16
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

使用pd.DataFrame构造函数 withSeries.map并使用pd.concatconcat with df


In [2696]: df = pd.concat([df,pd.DataFrame(df.Name.map(d).tolist(), columns=['Gender', 'Age'])], axis=1)


In [2695]: df

Out[2696]: 

     Name  Gender Age

0    Jack    Male  22

1    Alex    Male  26

2  Jackie  Female  28

3   Susan  Female  30


查看完整回答
反对 回复 2024-01-16
?
HUX布斯

TA贡献1876条经验 获得超6个赞

取出字典中的所有值


d = {'Jack':['Male','22'],'Alex':['Male','26'],'Jackie':['Female','28'],'Susan':['Female','30']}


value_list = list(d.values())

df = pd.DataFrame(value_list, columns =['Gender', 'Age'])

print(df)  


查看完整回答
反对 回复 2024-01-16
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

如果字典中没有匹配项,解决方案也能正常工作,例如:


d = {'Alex':['Male','26'],'Jackie':['Female','28'],'Susan':['Female','30']}



print (df)

     Name  Gender  Age

0    Alex    Male   26

1    Jack     NaN  NaN

2  Jackie  Female   28

3   Susan  Female   30

DataFrame.from_dict从字典中使用并添加到列Nameby DataFrame.join,优点是输入数据中的更多列都以相同的方式工作:

df = df.join(pd.DataFrame.from_dict(d, orient='index', columns=['Gender','Age']), on='Name')

print (df)

     Name  Gender Age

0    Jack    Male  22

1    Alex    Male  26

2  Jackie  Female  28

3   Susan  Female  30

如果创建 2 个字典,您的解决方案应该有效:


d1 = {k:v[0] for k,v in d.items()}

d2 = {k:v[1] for k,v in d.items()}


df['Gender'] = df.Name.map(d1)

df['Age'] = df.Name.map(d2)

print (df)

     Name  Gender Age

0    Jack    Male  22

1    Alex    Male  26

2  Jackie  Female  28

3   Susan  Female  30


查看完整回答
反对 回复 2024-01-16
  • 4 回答
  • 0 关注
  • 55 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信