Python 使用系列值作为索引,将值指定给其他系列

Python 使用系列值作为索引,将值指定给其他系列,python,pandas,Python,Pandas,我试图找到一个快捷方式,从列表中的元素分配熊猫系列 我的代码: import pandas as pd df=pd.DataFrame([[1,2,2183],[1,4,2235],[2,3,6123],[3,4,4213]],columns=['month','staff','sales']) goals=[1346,4456,4574] df['goals']=goals[df['month']-1] 最后一行抛出错误:TypeError:列表索引必须是整数或片,而不是序列 所需的输出

我试图找到一个快捷方式,从列表中的元素分配熊猫系列

我的代码:

import pandas as pd
df=pd.DataFrame([[1,2,2183],[1,4,2235],[2,3,6123],[3,4,4213]],columns=['month','staff','sales'])

goals=[1346,4456,4574]

df['goals']=goals[df['month']-1]
最后一行抛出错误:
TypeError:列表索引必须是整数或片,而不是序列

所需的输出如下所示:

   month  staff  sales  goals
0      1      2   2183   1346
1      1      4   2235   1346
2      2      3   6123   4456
3      3      3   4213   4574
这是一个一般情况,将来,目标数组实际上可能是多维的

In [80]: mapping = pd.Series(goals, index=df.month.unique())

In [81]: mapping
Out[81]:
1    1346
2    4456
3    4574
dtype: int64

In [82]: df['goals'] = df.month.map(mapping)

In [83]: df
Out[83]:
   month  staff  sales  goals
0      1      2   2183   1346
1      1      4   2235   1346
2      2      3   6123   4456
3      3      4   4213   4574
首先,目标及其各自月份的价值字典:

goals_dict = dict(zip(np.arange(1,len(goals)+1), goals))
现在使用
map

df['goals'] = df.month.map(goals_dict)
首先,目标及其各自月份的价值字典:

goals_dict = dict(zip(np.arange(1,len(goals)+1), goals))
现在使用
map

df['goals'] = df.month.map(goals_dict)

关于:
df['goals']=goals
?我给出了一个简单的例子。事实上,在《熊猫》系列中可能有几个月需要查找,而不是按顺序查找。目标总是井然有序的。好问题,谢谢!关于:
df['goals']=goals
?我给出了一个简单的例子。事实上,在《熊猫》系列中可能有几个月需要查找,而不是按顺序查找。目标总是井然有序的。好问题,谢谢!这是否能实现每月和员工确定的目标?目标矩阵?@hrschbck,我不明白-什么是
目标矩阵
?如果目标同时取决于月份和员工#,如果目标(月份=1,员工=2)=1500,目标(月份=1,员工=4)=1346?@hrschbck,请提出一个新问题并提供相应的数据集(输入和输出)…这是否可以实现每月和员工确定的目标?目标矩阵?@hrschbck,我不明白-什么是
目标矩阵
?如果目标同时取决于月份和员工#,如果目标(月份=1,员工=2)=1500,目标(月份=1,员工=4)=1346?@hrschbck,请提出一个新问题并提供相应的数据集(输入和输出)。。。