Python 将dataframe列与列表中基于另一列选择的因子相乘

Python 将dataframe列与列表中基于另一列选择的因子相乘,python,pandas,iteration,Python,Pandas,Iteration,我有每天的机场到达和离开人数,我想根据每小时的因素将其减少到每小时的数据。我在列表中列出了我的小时系数,例如: factors = { 0: 0.1, 1: 0.3, 2: 0.5, 3: 0.1,} 交通数据位于数据帧中,当前每小时有DateTimeIndex,并带有填充值(例如每天300次移动,现在每小时有此条目) 我试着把这一小时写进一个新的专栏

我有每天的机场到达和离开人数,我想根据每小时的因素将其减少到每小时的数据。我在列表中列出了我的小时系数,例如:

       factors = {  0: 0.1,
                    1: 0.3,
                    2: 0.5,
                    3: 0.1,}
交通数据位于数据帧中,当前每小时有DateTimeIndex,并带有填充值(例如每天300次移动,现在每小时有此条目)

我试着把这一小时写进一个新的专栏

    df['hour'] = df.index.hour
然后创建一个新的列
new\u scaled
,在这里我想将每日值乘以我想从列表中得到的这个特定小时的系数

    df['new_scaled'] = df.daily*factors[df.hour]
我得到一个错误
TypeError:“Series”对象是可变的,因此不能对它们进行散列

当我试图用
df.index.hour
直接从列表中访问因子时,我得到
TypeError:unhabable type:'Int64Index'

如何从列表中访问因子以计算新列?

使用


使用


    df['new_scaled'] = df.daily*factors[df.hour]
factors = {0: 0.1, 1: 0.3, 2: 0.5, 3: 0.1}

df['datum']  = pd.to_datetime(df.datum)

df['new_scaled']  = df.datum.dt.hour.map(factors) * df.daily
                datum  daily  new_scaled
0 2018-01-01 00:00:00    306        30.6
1 2018-01-01 01:00:00    306        91.8
2 2018-01-01 02:00:00    306       153.0
3 2018-01-01 03:00:00    306        30.6