根据国家和年龄,提供了一个孩子将获得多少津贴的代码。我可以使用for循环为孩子获得正确的津贴,但我想使用map函数代替。如果没有国家/地区功能,我只能将孩子的年龄值直接Map到1个dict。现在的问题是,我有2个dicts,我想Mapdf['age']
。是否有可能只使用map函数而避免for循环来获得正确的余量?
import pandas as pd
d1 = {
'canada': {
'0-5': 5,
'6-8': 8,
'9-10': 9,
'11-15': 14,
'16-18': 24},
'us': {
'0-5': 7,
'6-8': 9,
'9-10': 10,
'11-15': 15,
'16-18': 35}}
df = pd.DataFrame.from_dict({
'name': ['Askeladd', 'Torkel'],
'country': ['canada', 'us'],
'age': ['0-5', '16-18']})
df2 = df.copy()
df2['allowance'] = [0]*2
# Gives right answer
for i in range(len(df2)):
df2['allowance'].iloc[i] = d1[df2.iloc[i,:].loc['country']][df2.iloc[i,:].loc['age']]
# Gives wrong answer
df['allowance'] = df['age'].map(d1['us'])
2条答案
按热度按时间t98cgbkg1#
你可以从你的字典中创建一个dataframe,然后与原始的合并:
输出:
6yt4nkrj2#
加入
首先从
d1
中创建一个Series:然后加入: