如何解决将数据框列与列表中的因子相乘,该因子是根据另一列选择的
我有每天的机场到达和起飞的数量,我希望根据每小时的因素将其降采样为每小时的数据。我在列表中列出了我的小时因素,例如:
factors = { 0: 0.1,1: 0.3,2: 0.5,3: 0.1,}
交通数据在一个数据框中,当前每小时带有DateTimeIndex,并带有填充值(例如,每天300次移动,现在每小时显示此条目)。
datum daily
2018-01-01 00:00:00 306
2018-01-01 01:00:00 306
2018-01-01 02:00:00 306
2018-01-01 03:00:00 306
我试图用以下方法将时间输入新的列
df['hour'] = df.index.hour
然后创建一个新列new_scaled
,在这里我要将每日价值乘以我要从列表中获得的特定小时的因子。
df['new_scaled'] = df.daily*factors[df.hour]
我收到一个错误TypeError: 'Series' objects are mutable,thus they cannot be hashed
。
当我尝试直接使用df.index.hour
从列表中访问因子时,我得到TypeError: unhashable type: 'Int64Index'
如何从列表中访问因子以计算新列?
解决方法
使用Series.map
,
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。