4 回答

TA貢獻(xiàn)1860條經(jīng)驗 獲得超9個贊
df['Gender'] = df.Name.map(lambda x: d[x][0]) df['Age'] = df.Name.map(lambda x: d[x][1])

TA貢獻(xiàn)1900條經(jīng)驗 獲得超5個贊
使用pd.DataFrame
構(gòu)造函數(shù) withSeries.map
并使用pd.concat
concat 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

TA貢獻(xiàn)1876條經(jīng)驗 獲得超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)

TA貢獻(xiàn)1893條經(jīng)驗 獲得超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
從字典中使用并添加到列Name
by?DataFrame.join
,優(yōu)點是輸入數(shù)據(jù)中的更多列都以相同的方式工作:
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
如果創(chuàng)建 2 個字典,您的解決方案應(yīng)該有效:
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
添加回答
舉報